import std.stdio;
import std.range;
import std.array;
import std.functional;
import std.algorithm;
import std.conv;
import std.container;
import std.math;
import std.numeric;
import std.string;

ulong[] f(ulong d1, ulong v1, ulong d2, ulong v2) {
    ulong g = gcd(d2 * v1, d1 * v2);
    return [d2 * v1 / g, d1 * v2 / g];
}

ulong lcm(ulong a, ulong b) {
    ulong g = gcd(a, b);
    return (a / g) * b;
}

void main() {
    int n;
    while (readf("%d\n", &n), n) {
        ulong[][] x = new ulong[][n];
        ulong d1, v1; readf("%d %d\n", &d1, &v1);
        ulong y1 = 1;
        ulong[] y = new ulong[n];
        foreach (i; 1 .. n) {
            ulong d, v; readf("%d %d\n", &d, &v);
            x[i] = f(d1, v1, d, v);
        }
        foreach (i; 1 .. n) {
            y1 = lcm(y1, x[i][0]);
        }
        y[0] = y1;
        foreach (i; 1 .. n) {
            y[i] = y1 * x[i][1] / x[i][0];
        }
        foreach (i; 0 .. n) {
            y[i].writeln;
        }
    }
}