#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 1000000, P = 1e9 + 7;
int n;
int p2[N + 5], p10[7];
int s0[N], s1[N], s2[N], g[N];
void FWT(int *f) {
  for (int i = p10[1]; i <= p10[6]; i *= 10) {
    for (int j = 0; j < p10[6]; j += i) {
      for (int k = 0; k < i / 10; k++) {
        for (int l = 8; l >= 0; l--) {
          (f[j + k + l * i / 10] += f[j + k + (l + 1) * i / 10]) %= P;
        }
      }
    }
  }
  return;
}
void iFWT(int *f) {
  for (int i = p10[1]; i <= p10[6]; i *= 10) {
    for (int j = 0; j < p10[6]; j += i) {
      for (int k = 0; k < i / 10; k++) {
        for (int l = 0; l <= 8; l++) {
          (f[j + k + l * i / 10] -= f[j + k + (l + 1) * i / 10] - P) %= P;
        }
      }
    }
  }
  return;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  p10[0] = 1;
  for (int i = 1; i <= 6; i++) p10[i] = p10[i - 1] * 10;
  cin >> n;
  p2[0] = 1;
  for (int i = 1; i <= n; i++) p2[i] = (p2[i - 1] << 1) % P;
  for (int i = 1, first; i <= n; i++) {
    cin >> first;
    s0[first]++, (s1[first] += first) %= P,
        (s2[first] += 1ll * first * first % P) %= P;
  }
  FWT(s0), FWT(s1), FWT(s2);
  for (int i = 0; i < p10[6]; i++) {
    if (s0[i] >= 1) (g[i] += 1ll * p2[s0[i] - 1] * s2[i] % P) %= P;
    int p = (1ll * s1[i] * s1[i] % P - s2[i] + P) % P;
    if (s0[i] >= 2) (g[i] += 1ll * p2[s0[i] - 2] * p % P) %= P;
  }
  iFWT(g);
  i64 ans = 0;
  for (int i = 0; i < p10[6]; i++) ans ^= 1ll * i * g[i];
  cout << ans << endl;
  return 0;
}
