#include <bits/stdc++.h>
using namespace std;
long long int powe(long long int d, long long int s) {
  if (s == 1)
    return d;
  else if (s == 0)
    return 1;
  else {
    long long int u, v = d;
    for (u = 1; u < s; u++) {
      d = d * v;
    }
    return d;
  }
}
bool isprime(long long int n) {
  long long int i;
  for (i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      return false;
    }
  }
  return true;
}
long long int ara[1000005], b[10000005], c[10000005];
int main() {
  long long int n, ans = 0, i, a, k, m, r;
  cin >> a >> k >> m >> r;
  map<long long int, long long int> mp;
  ara[1] = (a * r + k) % m;
  b[ara[1]] = 1;
  for (i = 2; i <= 1e8 - 1; i++) {
    ara[i] = (ara[i - 1] * a + k) % m;
    if (mp[ara[i]] == 0) {
      b[ara[i]] = i;
    }
    mp[ara[i]]++;
    c[ara[i]] = i;
    if (mp[ara[i]] == 2) break;
  }
  cout << c[ara[i]] - b[ara[i]];
  return 0;
}
