#include <bits/stdc++.h>
using namespace ::std;
template <class T>
T SQR(T N) {
  return (T)N * N;
}
template <class T>
double DIST(T a, T b) {
  return 1.0 * sqrt(SQR(double(a)) + SQR(double(b)));
}
template <class T>
bool CROSS(pair<T, T> a, pair<T, T> b, pair<T, T> c) {
  return (b.first - a.first) * (c.second - b.second) >=
         (b.second - a.second) * (c.first - b.first);
}
template <class ll>
ll POW(ll a, ll b, ll mod) {
  ll res = 1 % mod, x = a % mod;
  while (b) {
    if (b & 1) res = (res * x) % mod;
    b /= 2, x = (x * a) % mod;
  }
  return res;
}
int px[] = {0, 1, -1, 0, -1, -1, 1, 1};
int py[] = {1, 0, 0, -1, -1, 1, -1, 1};
double EPS = 1e-9;
double PI = acos(-1);
double GR = 1.6180339887498948;
int F[7];
inline void Fail(string str) {
  string s = str;
  reverse(s.begin(), s.end());
  s = s + "#" + str;
  int len = s.length();
  for (int i = 1; i < len; ++i) {
    int j = F[i - 1];
    while (j > 0 and s[i] != s[j]) j = F[j - 1];
    if (s[i] == s[j]) ++j;
    F[i] = j;
  }
}
int main() {
  int n, m, c, d, a, b, k;
  int test;
  scanf("%d%d%d", &n, &m, &d);
  bool flag = 0;
  b = c = 0;
  for (int i = 0; i < n; ++i)
    scanf("%d", &a), (a % d and !flag) ? flag = 1, b = i : flag;
  flag = 0;
  for (int i = 0; i < m; ++i)
    scanf("%d", &a), (a % d and !flag) ? flag = 1, c = i : flag;
  printf("%d\n", b + c);
}
