func_code_string: #include <bits/stdc++.h>   const int mod = 1e9 + 7, maxn = 1e6, maxm = 6;   int n, a[maxn], b[maxn], c[maxn], g[maxn], pw2[maxn], pw10[maxm];   long long ans;   int main() {     scanf( %d , &n);     while (n--) {       int x;       scanf( %d , &x);       ++a[x];       (b[x] += x) %= mod;       c[x] = (1ll * x * x + c[x]) % mod;     }     pw2[0] = pw10[0] = 1;     for (int i = 1; i < maxm; ++i) {       pw2[i] = pw2[i - 1] << 1;       pw10[i] = pw10[i - 1] * 10;     }     for (int i = maxm; i < maxn; ++i) {       pw2[i] = (pw2[i - 1] << 1) % mod;     }     for (int j = 0; j < maxm; ++j) {       for (int i = maxn - 1; ~i; --i) {         if (i / pw10[j] % 10 < 9) {           (a[i] += a[i + pw10[j]]) %= mod;           (b[i] += b[i + pw10[j]]) %= mod;           (c[i] += c[i + pw10[j]]) %= mod;         }       }     }     for (int i = 0; i < maxn; ++i) {       if (a[i] >= 1) {         g[i] = (1ll * c[i] * pw2[a[i] - 1] + g[i]) % mod;         if (a[i] >= 2) {           g[i] = ((1ll * b[i] * b[i] - c[i]) % mod * pw2[a[i] - 2] + g[i]) % mod;         }       }     }     for (int j = 0; j < maxm; ++j) {       for (int i = 0; i < maxn; ++i) {         if (i / pw10[j] % 10 < 9) {           (g[i] -= g[i + pw10[j]]) %= mod;         }       }     }     for (int i = 0; i < maxn; ++i) {       ans ^= 1ll * (g[i] + mod) % mod * i;     }     printf( %lld n , ans);     return 0;   }   