#include <bits/stdc++.h>
int n, k;
int dp[2][21000], a[110], b[110], c[110];
void init() {
  int i;
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
  }
  for (i = 1; i <= n; i++) {
    scanf("%d", &b[i]);
    c[i] = a[i] - b[i] * k;
  }
  memset(dp, -1, sizeof(dp));
  dp[0][10000] = 0;
}
int Dp() {
  int i, j;
  int f = 0;
  for (i = 1; i <= n; i++) {
    f = f ^ 1;
    for (j = 0; j <= 20000; j++) {
      if (j - c[i] >= 0 && j - c[i] <= 20000) {
        dp[f][j] = dp[f][j] > dp[1 - f][j] ? dp[f][j] : dp[1 - f][j];
        ;
        if (dp[1 - f][j - c[i]] != -1)
          dp[f][j] = dp[f][j] > dp[1 - f][j - c[i]] + a[i]
                         ? dp[f][j]
                         : dp[1 - f][j - c[i]] + a[i];
        ;
      }
    }
  }
  if (dp[f][10000]) return dp[f][10000];
  return -1;
}
int main() {
  while (scanf("%d %d", &n, &k) != EOF) {
    init();
    int ans = Dp();
    printf("%d\n", ans);
  }
  return 0;
}
