# Include <cstdio>
Long long Mod (long a, long B)
{Return (a % B + B) % B ;}
Struct triple {long d, X, Y ;};
Long long Euclid (Long a, long B)
{
If (B = 0) return;
Else return Euclid (B, MOD (a, B ));
}
Triple extended_euclid (long a, long B)
{
Triple result;
If (B = 0)
{Result. d = A; Result. x = 1; Result. Y = 0 ;}
Else
{
Triple EE = extended_euclid (B, MOD (a, B ));
Result. d = ee. D;
Result. x = ee. Y;
Result. Y = ee. X-(A/B) * ee. Y;
}
Return result;
}
Long long mles (long a, long B, long N)
{
Triple EE = extended_euclid (A, N );
If (mod (B, ee. d) Return-1;
Else return Mod (EE. x * (B/EE. D), N/EE. D );
}
Int main ()
{
Long long x, y, m, n, l;
While (scanf ("% i64d % i64d % i64d % i64d % i64d", & X, & Y, & M, & N, & L )! = EOF)
{
Long long mles;
Mles = mles (m-N, Y-X, L );
/* Enter the following three parameters: A, B, and N to obtain the limit solution (ax-B) % n = 0.
If-1 is returned, this equation has no solution. */
If (mles <0)
Printf ("impossible \ n ");
Else
Printf ("% i64d \ n", mles );
}
Return 0;
}