#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;
}
