#include <bits/stdc++.h>
using namespace std;
const long max_n = 2e6;
bool check[max_n+1];
queue< pair<long, long> > q;
void test(long x, long cnt)
{
if (!check[x])
{
check[x] = true;
q.push({x, cnt});
}
}
long Loang(long n, long p, long a, long b, long r)
{
memset(check, false, sizeof check);
int cnt = 0;
q.push({n%p,cnt});
check[n] = true;
while(!q.empty())
{
tie(n, cnt) = q.front(); q.pop();
if (n==r) return cnt;
test((n+a)%p, cnt+1);
test((n+b)%p, cnt+1);
test((n+a+b)%p, cnt+1);
}
return -1;
}
int main()
{
// freopen("REPLACE.INP", "r", stdin);
// freopen("REPLACE.OUT", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
long long n; long p, a, b, r; cin >> n >> p >> a >> b >> r;
cout << Loang(n%p,p,a,b,r);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBsb25nIG1heF9uID0gMmU2OwoKYm9vbCBjaGVja1ttYXhfbisxXTsKcXVldWU8IHBhaXI8bG9uZywgbG9uZz4gPiBxOwoKdm9pZCB0ZXN0KGxvbmcgeCwgbG9uZyBjbnQpCnsKICAgIGlmICghY2hlY2tbeF0pCiAgICB7CiAgICAgICAgY2hlY2tbeF0gPSB0cnVlOwogICAgICAgIHEucHVzaCh7eCwgY250fSk7CiAgICB9Cn0KCmxvbmcgTG9hbmcobG9uZyBuLCBsb25nIHAsIGxvbmcgYSwgbG9uZyBiLCBsb25nIHIpCnsKICAgIG1lbXNldChjaGVjaywgZmFsc2UsIHNpemVvZiBjaGVjayk7CiAgICBpbnQgY250ID0gMDsKICAgIHEucHVzaCh7biVwLGNudH0pOwogICAgY2hlY2tbbl0gPSB0cnVlOwoKICAgIHdoaWxlKCFxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgdGllKG4sIGNudCkgPSBxLmZyb250KCk7IHEucG9wKCk7CiAgICAgICAgaWYgKG49PXIpIHJldHVybiBjbnQ7CgogICAgICAgIHRlc3QoKG4rYSklcCwgY250KzEpOwogICAgICAgIHRlc3QoKG4rYiklcCwgY250KzEpOwogICAgICAgIHRlc3QoKG4rYStiKSVwLCBjbnQrMSk7CiAgICB9CgogICAgcmV0dXJuIC0xOwp9CgppbnQgbWFpbigpCnsKICAgLy8gZnJlb3BlbigiUkVQTEFDRS5JTlAiLCAiciIsIHN0ZGluKTsKICAgLy8gZnJlb3BlbigiUkVQTEFDRS5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CgogICAgbG9uZyBsb25nIG47IGxvbmcgcCwgYSwgYiwgcjsgY2luID4+IG4gPj4gcCA+PiBhID4+IGIgPj4gcjsKCiAgICBjb3V0IDw8IExvYW5nKG4lcCxwLGEsYixyKTsKCiAgICByZXR1cm4gMDsKfQo=