#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
int a[1010] = { 0 };// 0次项目求导后为0
int k, e, count = 0;
while (scanf("%d%d", &k, &e) != EOF) {
a[e] = k;
}
for (int i = 1; i <= 1000; i++) {
a[i - 1] = a[i] * i;
a[i] = 0;// 这句一定要有,否则会多出一项导数
if (a[i - 1] != 0) {
count++;// 记录非零导数项个数
}
}
if (count == 0) {
cout << "0 0" << endl;
}
else {
for (int i = 1000; i >= 0; i--) {
if (a[i] != 0) {
cout << a[i] << ' ' << i;
if (--count != 0) {
cout << ' ';// 控制空格的输出
}
}
}
}
return 0;
}