#include <bits/stdc++.h>
using namespace std;
// make sure modify 0LL + , 1LL * , overflow when remove define
#define int long long
#define _3bkarm cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(false);
int extended_gcd(int a, int b, int& x, int& y) {
if (a < 0) {
int g = extended_gcd(-a, b, x, y);
x *= -1;
return g;
}
if (b < 0) {
int g = extended_gcd(a, -b, x, y);
y *= -1;
return g;
}
if (b == 0) {
x = 1, y = 0;
return a;
}
int g = extended_gcd(b, a % b, y, x);
y -= (a / b) * x;
return g;
}
void shift(int& x, int& y, int a, int b, int t) {
x += t * b, y -= t * a;
}
bool solve(int a, int b, int c, int minx, int miny, int& x, int& y, int& g) {
g = extended_gcd(a, b, x, y);
if (c % g != 0) return false;
x *= c / g, y *= c / g, a /= g, b /= g;
int fa = ( (a > 0) ? (1) : (-1) );
int fb = ( (b > 0) ? (1) : (-1) );
shift(x, y, a, b, (minx - x) / b);
if (x < minx) shift(x, y, a, b, fb);
int save = x;
shift(x, y, a, b, -(miny - y) / a);
if (y < miny) shift(x, y, a, b, -fa);
x = max(x, save);
return true;
}
void get_shit_done() {
int n, m, a, k;
while (cin >> n >> m >> a >> k) {
if (n + m + a + k == 0) return;
int x, y, g;
if ( solve(a, -m, n - k, 1, 0, x, y, g) ) {
cout << x * a + k << '\n';
} else {
cout << "Impossible\n";
}
}
}
signed main() {
_3bkarm
int ts = 1;
// cin >> ts;
while (ts--) {
get_shit_done();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gbWFrZSBzdXJlIG1vZGlmeSAwTEwgKyAsIDFMTCAqICwgb3ZlcmZsb3cgd2hlbiByZW1vdmUgZGVmaW5lCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIF8zYmthcm0gY2luLnRpZShOVUxMKTsgY291dC50aWUoTlVMTCk7IGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCmludCBleHRlbmRlZF9nY2QoaW50IGEsIGludCBiLCBpbnQmIHgsIGludCYgeSkgewogICAgaWYgKGEgPCAwKSB7CiAgICAgICAgaW50IGcgPSBleHRlbmRlZF9nY2QoLWEsIGIsIHgsIHkpOwogICAgICAgIHggKj0gLTE7CiAgICAgICAgcmV0dXJuIGc7CiAgICB9CiAgICBpZiAoYiA8IDApIHsKICAgICAgICBpbnQgZyA9IGV4dGVuZGVkX2djZChhLCAtYiwgeCwgeSk7CiAgICAgICAgeSAqPSAtMTsKICAgICAgICByZXR1cm4gZzsKICAgIH0KICAgIGlmIChiID09IDApIHsKICAgICAgICB4ID0gMSwgeSA9IDA7CiAgICAgICAgcmV0dXJuIGE7CiAgICB9CiAgICBpbnQgZyA9IGV4dGVuZGVkX2djZChiLCBhICUgYiwgeSwgeCk7CiAgICB5IC09IChhIC8gYikgKiB4OwogICAgcmV0dXJuIGc7Cn0KCnZvaWQgc2hpZnQoaW50JiB4LCBpbnQmIHksIGludCBhLCBpbnQgYiwgaW50IHQpIHsKICAgIHggKz0gdCAqIGIsIHkgLT0gdCAqIGE7Cn0KCmJvb2wgc29sdmUoaW50IGEsIGludCBiLCBpbnQgYywgaW50IG1pbngsIGludCBtaW55LCBpbnQmIHgsIGludCYgeSwgaW50JiBnKSB7CiAgICBnID0gZXh0ZW5kZWRfZ2NkKGEsIGIsIHgsIHkpOwogICAgaWYgKGMgJSBnICE9IDApIHJldHVybiBmYWxzZTsKCiAgICB4ICo9IGMgLyBnLCB5ICo9IGMgLyBnLCBhIC89IGcsIGIgLz0gZzsKCiAgICBpbnQgZmEgPSAoIChhID4gMCkgPyAoMSkgOiAoLTEpICk7CiAgICBpbnQgZmIgPSAoIChiID4gMCkgPyAoMSkgOiAoLTEpICk7CgogICAgc2hpZnQoeCwgeSwgYSwgYiwgKG1pbnggLSB4KSAvIGIpOwogICAgaWYgKHggPCBtaW54KSBzaGlmdCh4LCB5LCBhLCBiLCBmYik7CiAgICBpbnQgc2F2ZSA9IHg7CgogICAgc2hpZnQoeCwgeSwgYSwgYiwgLShtaW55IC0geSkgLyBhKTsKICAgIGlmICh5IDwgbWlueSkgc2hpZnQoeCwgeSwgYSwgYiwgLWZhKTsKICAgIHggPSBtYXgoeCwgc2F2ZSk7CgogICAgcmV0dXJuIHRydWU7Cn0KCnZvaWQgZ2V0X3NoaXRfZG9uZSgpIHsKICAgIGludCBuLCBtLCBhLCBrOwogICAgd2hpbGUgKGNpbiA+PiBuID4+IG0gPj4gYSA+PiBrKSB7CiAgICAgICAgaWYgKG4gKyBtICsgYSArIGsgPT0gMCkgcmV0dXJuOwogICAgICAgIGludCB4LCB5LCBnOwogICAgICAgIGlmICggc29sdmUoYSwgLW0sIG4gLSBrLCAxLCAwLCB4LCB5LCBnKSApIHsKICAgICAgICAgICAgY291dCA8PCB4ICogYSArIGsgPDwgJ1xuJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb3V0IDw8ICJJbXBvc3NpYmxlXG4iOwogICAgICAgIH0KICAgIH0KfQoKc2lnbmVkIG1haW4oKSB7CiAgICBfM2JrYXJtCgogICAgaW50IHRzID0gMTsKLy8gICAgY2luID4+IHRzOwogICAgd2hpbGUgKHRzLS0pIHsKICAgICAgICBnZXRfc2hpdF9kb25lKCk7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0=