#include <bits/stdc++.h>
using namespace std;
int a[105], b[105], n, k;
long long dp[105][100005];
long long f(int w, int s) {
  if (w == n && s == 0) {
    return 0;
  }
  if (w == n) return -9223372036854775807;
  if (dp[w][s] != -1) return dp[w][s];
  if (a[w] + f(w + 1, s + a[w] - b[w]) > f(w + 1, s)) {
    dp[w][s] = a[w] + f(w + 1, s + a[w] - b[w]);
    return a[w] + f(w + 1, s + a[w] - b[w]);
  } else {
    dp[w][s] = f(w + 1, s);
    return f(w + 1, s);
  }
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
    b[i] = b[i] * k;
  }
  memset(dp, -1, sizeof(dp));
  if (f(0, 0) <= 0) {
    cout << -1;
  } else {
    cout << f(0, 0);
  }
  return 0;
}
