#include <bits/stdc++.h>
int a[1000000], b[1000000], n, k, f[1000000], c[1000000], i, j;
int max(int a, int b) {
  if (a > b) return a;
  return b;
}
int main() {
  scanf("%d%d", &n, &k);
  for (i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (i = 1; i <= n; i++) {
    scanf("%d", &b[i]);
    b[i] = b[i] * k;
    c[i] = a[i] - b[i];
  }
  for (i = 0; i <= 20000; i++) f[i] = -0x37373737;
  f[10000] = 0;
  for (i = 1; i <= n; i++) {
    if (c[i] > 0)
      for (j = 20000; j >= c[i]; j--) f[j] = max(f[j - c[i]] + a[i], f[j]);
    else
      for (j = 0; j <= 20000 + c[i]; j++) f[j] = max(f[j - c[i]] + a[i], f[j]);
  }
  if (f[10000])
    printf("%d", f[10000]);
  else
    printf("-1");
}
