#include <bits/stdc++.h>
using namespace std;
inline int read() {
  register int data = 0, w = 1;
  char ch = 0;
  while (ch != '-' && (ch < '0' || ch > '9')) ch = getchar();
  if (ch == '-') w = -1, ch = getchar();
  while (ch >= '0' && ch <= '9') data = data * 10 + ch - '0', ch = getchar();
  return data * w;
}
int n, a[1000005], f1[1000005], f2[1000005], f3[1000005], b[1000005],
    g[1000005], p2[1000005];
const int mod = 1e9 + 7;
void add(int &x, int y) {
  x += y - mod;
  x += x >> 31 & mod;
}
void dec(int &x, int y) {
  x -= y;
  x += x >> 31 & mod;
}
const int M = 999999;
int main() {
  n = read();
  for (int i = 1; i <= n; i++)
    a[i] = read(), f1[a[i]]++, add(f2[a[i]], a[i]),
    add(f3[a[i]], 1ll * a[i] * a[i] % mod);
  b[0] = 1;
  p2[0] = 1;
  for (int i = 1; i <= 6; i++) b[i] = b[i - 1] * 10;
  for (int i = 1; i <= (int)1e6; i++) p2[i] = (p2[i - 1] << 1) % mod;
  for (int i = 0; i <= 5; i++)
    for (int v = M; v >= 0; v--)
      if (v % b[i + 1] < 9 * b[i])
        add(f1[v], f1[v + b[i]]), add(f2[v], f2[v + b[i]]),
            add(f3[v], f3[v + b[i]]);
  for (int v = 0; v <= M; v++)
    if (f1[v] >= 1) {
      if (f1[v] == 1)
        g[v] = 1ll * f2[v] * f2[v] % mod;
      else
        g[v] = 1ll * p2[f1[v] - 2] * (1ll * f2[v] * f2[v] % mod + f3[v]) % mod;
    }
  for (int i = 0; i <= 5; i++)
    for (int v = 0; v <= M; v++)
      if (v % b[i + 1] < 9 * b[i]) dec(g[v], g[v + b[i]]);
  long long ans = 0;
  for (int v = 0; v <= M; v++) ans ^= 1ll * g[v] * v;
  cout << ans << '\n';
  return 0;
}
