#include <bits/stdc++.h>
using namespace std;
int rd() {
  int x = 0;
  char c = getchar();
  while (c < '0' || c > '9') {
    x = x * 10 + c - '0';
    c = getchar();
  }
  return x;
}
struct milk {
  int x, num;
  bool operator<(const milk &mm) const { return x < mm.x; }
} b[1000010];
int a[1000010], n, m, k;
bool ok(int p2) {
  int p1 = 1, now = 0;
  while (p1 <= n || p2 <= m) {
    if ((p1 <= n && a[p1] < now) || (p2 <= m && b[p2].x < now)) return 0;
    for (int i = 1; i <= k; i++)
      if (p1 <= n && (p2 > m || a[p1] < b[p2].x))
        p1++;
      else
        p2++;
    now++;
  }
  return 1;
}
int main() {
  int l, r, mid;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= m; i++) {
    scanf("%d", &b[i].x);
    b[i].num = i;
  }
  sort(a + 1, a + n + 1);
  sort(b + 1, b + m + 1);
  if (!ok(m + 1)) {
    printf("-1\n");
    return 0;
  }
  l = 1;
  r = m + 1;
  while (l < r) {
    mid = (l + r) / 2;
    if (ok(mid))
      r = mid;
    else
      l = mid + 1;
  }
  printf("%d\n", m - l + 1);
  for (int i = l; i <= m; i++) printf("%d%c", b[i].num, i == m ? '\n' : ' ');
}
