You are given a sequence of numbers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub>, and a number *m*.

Check if it is possible to choose a non-empty subsequence *a*<sub class="lower-index">*i*<sub class="lower-index">*j*</sub></sub> such that the sum of numbers in this subsequence is divisible by *m*.
The first line contains two numbers, *n* and *m* (1 ≤ *n* ≤ 10<sup class="upper-index">6</sup>, 2 ≤ *m* ≤ 10<sup class="upper-index">3</sup>) — the size of the original sequence and the number such that sum should be divisible by it.

The second line contains *n* integers *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> (0 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>).
# m=5
# 4 4 2 5
# 15 11 9 5
n,m=list(map(int,input().split()))
if n>m:
  print("YES")
  exit()
nums = list(map(int,input().split()))
dp=[[0 for i in range(m+1)] for i in range(n+1)]
# dp[0][0]=True
# print(2%5)
# [0,1,2,3,4,5,6]
# [0,]
check="NO"
for i in range(1,len(dp)):
  target = nums[i-1]%m
  # print(target,nums[i-1])
  dp[i][target] = True
  for j in range(len(dp[0])):
    if dp[i-1][j]==True:
      value = (j+nums[i-1])%m
      dp[i][value] = dp[i][value] or True
      # pass
    # else:
      dp[i][j]=dp[i-1][j] or dp[i][j]
# for i in dp:
#   print(i)
# print(check)
# print(dp)
if dp[-1][0]==True:
  print("YES")
else:
  print("NO")