//#pragma comment(linker, "/STACK:1024000000,1024000000") //#pragma GCC optimize(2) #include <algorithm> #include <iostream> #include<sstream> #include<iterator> #include<cstring> #include<string> #include<cstdio> #include<cctype> #include<vector> #include<deque> #include<queue> #include<stack> #include<map> #include<set> using namespace std; typedef double dou; typedef long long ll; #define M 100005 #define inf 0x3f3f3f3f #define mod 1000000007 #define left k<<1 #define right k<<1|1 #define W(a) while(a) #define ms(a,b) memset(a,b,sizeof(a)) ll gcd_pro(ll A, ll B, ll &x, ll &y) { if (B == 0) { x = 1, y = 0; return A; } ll ans = gcd_pro(B, A % B, y, x); y = y - (A / B) * x; return ans; } int main() { std::ios::sync_with_stdio(false); ll gcd; ll x, y; ll st_x, st_y, m, n, L; cin >> st_x >> st_y >> m >> n >> L; gcd = gcd_pro(m - n, L, x, y); if ((st_y - st_x) % gcd != 0) { cout << "Impossible" << endl; } else { x = x * (st_y - st_x) / gcd; L /= gcd; x %= L; if (x < 0) { if (L < 0)L = -L; x += L; } cout << x << endl; } return 0; }