#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 10, P = 1e9 + 7, U = 1e6 - 1;
long long f1[N], f2[N], f3[N], n, A[N], t[N], val[N], bit[N], ans;
int main() {
  cin >> n;
  for (long long i = bit[0] = 1; i <= 6; i++) bit[i] = 10 * bit[i - 1];
  for (long long i = t[0] = 1; i <= n; i++) t[i] = 2ll * t[i - 1] % P;
  for (long long i = 1, x; i <= n; i++)
    scanf("%lld", &x), f1[x]++, (f2[x] += x) %= P,
        (f3[x] += 1ll * x * x % P) %= P;
  for (long long j = 0; j < 6; j++)
    for (long long i = U; i >= 0; i--)
      if (i / bit[j] % 10 < 9) {
        f1[i] += f1[i + bit[j]];
        (f2[i] += f2[i + bit[j]]) %= P;
        (f3[i] += f3[i + bit[j]]) %= P;
      }
  for (long long i = 0; i <= U; i++) {
    long long res = (f2[i] * f2[i] % P - f3[i] + P) % P * (P / 2 + 1) % P;
    if (f1[i]) val[i] = (t[f1[i] - 1] * (f3[i] + res) % P + P) % P;
  }
  for (long long j = 0; j < 6; j++)
    for (long long i = 0; i <= U; i++)
      if (i / bit[j] % 10 < 9) (val[i] += P - val[i + bit[j]]) %= P;
  for (long long i = 0; i <= U; i++) ans ^= val[i] * i;
  cout << ans << endl;
}
