#include <bits/stdc++.h>
using namespace std;
int n, m, T[1000001], memo[1001][1001];
int fix(int x) { return (x % m); }
int solve(int indx, int mod) {
  if (mod % m == 0) return 1;
  if (indx == n) return 0;
  int &ans = memo[indx][mod];
  if (mod == -1)
    return ans = solve(indx + 1, T[indx] % m) || solve(indx + 1, mod);
  if (ans != -1) return ans;
  ans = (solve(indx + 1, fix(mod + T[indx])) || solve(indx + 1, mod));
  return ans;
}
int main() {
  memset(memo, -1, sizeof(memo));
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) scanf("%d", &T[i]);
  if (n > m)
    printf("YES");
  else {
    if (solve(0, -1))
      printf("YES");
    else
      printf("NO");
  }
  return 0;
}
