func_code_string: #include <bits/stdc++.h>   using namespace std;   long long gcd(long long a, long long b) { return (b == 0 ? a : gcd(b, a % b)); }   long long lcm(long long a, long long b) { return (a * (b / gcd(a, b))); }   long long bigmod(long long b, long long p, long long m) {     if (p == 0) return 1;     if (p % 2 == 0) {       long long temp = bigmod(b, p / 2, m);       return (temp * temp) % m;     }     return (bigmod(b, p - 1, m) * (b % m)) % m;   }   char inp[10010];   string scan() {     scanf( %s , inp);     string s;     for (int i = 0; inp[i]; i++) s += inp[i];     return s;   }   vector<vector<int> > v;   vector<bool> visited;   int visit[100];   void dfs(int node) {     visit[node] = 1;     for (int i = 0; i < (int)v[node].size(); i++)       if (!visit[v[node][i]]) dfs(v[node][i]);   }   int connectedcomponenetscnt(int head) {     int cnt = 0;     for (int i = 1; i < 500; i++) {       if (!visit[i]) {         dfs(i);         cnt++;       }     }     return cnt;   }   int com(string s, string t) {     for (int i = 0; i < min(s.length(), t.length()); i++) {       if (s[i] > t[i]) return 1;       if (s[i] < t[i]) return 0;     }     if (s.length() > t.length()) return 1;     return 0;   }   int n, m, x;   int a[1001];   int memo[1001][1001][2];   int dp(int i, int sum, int k) {     if (sum % m == 0 && k) return 1;     if (i == m) return 0;     int &ret = memo[i][sum][k];     if (ret != -1) return ret;     ret = 0;     for (int j = 0; j <= a[i]; j++) {       if (j > 0 || k)         ret = ret + dp(i + 1, (sum + i * j) % m, 1);       else         ret = ret + dp(i + 1, (sum + i * j) % m, 0);     }     return ret;   }   int main() {     memset(memo, -1, sizeof(memo));     memset(a, 0, sizeof(a));     cin >> n >> m;     int yes = 0;     for (int i = 0; i < n; i++) {       scanf( %d , &x);       x = x % m;       if (x == 0) yes = 1;       a[x]++;     }     for (int i = 1; i < m; i++)       if (a[i] >= m) yes = 1;     if (yes)       cout <<  YES ;     else if (dp(1, 0, 0))       cout <<  YES ;     else       cout <<  NO ;   }   