func_code_string: #include <bits/stdc++.h>   using namespace std;   int p[35], d[35], g[35], h[35], w[55], n, a, b, c, s, MOD;   bool f[35][35][50005], v[35][35][50005];   int main() {     int i, j, k, r = 0, x;     scanf( %d%d , &n, &MOD);     for (i = 0; i <= 40; i++) {       if (i < 10)         w[i] = 10 % MOD;       else         w[i] = 100 % MOD;     }     for (i = 1; i <= n; i++) {       scanf( %d , &x);       if (x < 32) {         s++;         d[s] = x;         g[s] = i;       }     }     n = min(n, 31);     for (i = 1; i <= n; i++) {       f[i][d[i]][d[i] % MOD] = 1;       v[i][d[i]][d[i] % MOD] = 1;       for (j = 0; j < 32; j++) {         for (k = 0; k < MOD; k++) {           if (f[i - 1][j][k]) {             f[i][j][k] = 1;             f[i][j ^ d[i]][(k * w[d[i]] + d[i]) % MOD] = true;             v[i][j ^ d[i]][(k * w[d[i]] + d[i]) % MOD] = true;           }         }       }     }     a = n;     if (!f[a][b][c]) {       puts( No );       return 0;     }     while (a) {       if (!v[a][b][c])         a--;       else {         r++;         p[r] = g[a];         b ^= d[a];         for (j = 0; j < MOD; j++) {           if (f[a - 1][b][j] && (j * w[d[a]] + d[a]) % MOD == c) {             c = j;             break;           }         }         a--;       }     }     puts( Yes );     printf( %d n , r);     for (i = r; i >= 1; i--) printf( %d  , p[i]);     puts(  );     return 0;   }   