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>).
import collections
import heapq
import sys
import math
import itertools
import bisect
import os
from io import BytesIO, IOBase
input = sys.stdin.readline
def solve():
    n, m = list(map(int, input().split()))
    l = list(map(int, input().split()))
    if n > m : return "YES"
    elif 0 in set(l) :return "YES"
    else:
        dp = [-1]*(m+1)
        for ele in l:
            tmp = dp.copy()
           
            for j in range(m):
                if dp[j] == -1:continue
                tmp[(j+ele) % (m)] = 1
            tmp[ele%m]=1
            dp = tmp.copy()
            if dp[0] == 1:return "YES" 
    
    return "NO"

if __name__ == '__main__':
    print(solve())
