#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int SIZE = 1e6 + 10;
int m;
void get(long long h, long long a, long long x, long long y, long long &v1,
         long long &v2) {
  v1 = -1;
  v2 = -1;
  int tt = 0;
  for (int i = 0; i < (m * 5); ++i) {
    h = (x * h + y) % m;
    if (h == a) {
      if (!tt) {
        v1 = i + 1;
      } else if (tt == 1) {
        v2 = i + 1;
      } else
        break;
      tt++;
    }
  }
}
int ha[SIZE];
int main() {
  scanf("%d", &(m));
  int h1, a1;
  scanf("%d%d", &h1, &a1);
  int x1, y1;
  scanf("%d%d", &x1, &y1);
  int h2, a2;
  scanf("%d%d", &h2, &a2);
  int x2, y2;
  scanf("%d%d", &x2, &y2);
  long long v1, v2, u1, u2;
  get(h1, a1, x1, y1, v1, v2);
  get(h2, a2, x2, y2, u1, u2);
  if (v1 == -1 || u1 == -1) {
    puts("-1");
  } else {
    if (u2 == -1) {
      swap(v1, u1);
      swap(v2, u2);
    }
    if (v2 == -1) {
      if (u2 == -1) {
        if (v1 == u1)
          cout << v1 << endl;
        else
          cout << -1 << endl;
      } else {
        long long now = u1;
        for (int k = 0; k < (m * 5); ++k) {
          if (now == v1) {
            cout << now << endl;
            return 0;
          }
          now += u2 - u1;
        }
        cout << -1 << endl;
        return 0;
      }
    } else {
      long long now = u1;
      for (int k = 0; k < (m * 5); ++k) {
        if (now >= v1 && (now - v1) % (v2 - v1) == 0) {
          cout << now << endl;
          return 0;
        }
        now += u2 - u1;
      }
      cout << -1 << endl;
      return 0;
    }
  }
  return 0;
}
