#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 50, mo = 1e9 + 7, P = 1e6;
inline int gi() {
  char ch = getchar();
  int q = 0, x = 0;
  while (ch < '0' || ch > '9') q = (ch == '-' ? 1 : q), ch = getchar();
  while (ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar();
  return q ? (-x) : x;
}
int f0[N], f1[N], f2[N];
int main() {
  int n = gi(), s;
  for (int i = 1; i <= n; ++i) {
    s = gi();
    (f2[s] =
         (f2[s] + 1ll * s * s % mo * (f0[s] + 1) + 2ll * f1[s] * s + f2[s]) %
         mo);
    (f1[s] = (f1[s] + 1ll * s * (f0[s] + 1) + f1[s]) % mo);
    (f0[s] = (f0[s] + f0[s] + 1) % mo);
  }
  s = 1;
  for (int i = 1; i <= 6; ++i) {
    for (int k = P - 1, j = k - s; ~j; --j, --k) {
      if ((j / s) % 10 == 9) continue;
      (f2[j] = (f2[j] + 1ll * f0[j] * f2[k] + 2ll * f1[j] * f1[k] +
                1ll * f2[j] * f0[k] + f2[k]) %
               mo);
      (f1[j] =
           (f1[j] + 1ll * f0[j] * f1[k] + 1ll * f1[j] * f0[k] + f1[k]) % mo);
      (f0[j] = (f0[j] + 1ll * f0[j] * f0[k] + f0[k]) % mo);
    }
    s *= 10;
  }
  for (int i = 1; i <= 6; ++i) {
    s /= 10;
    for (int k = 0, j = s; j < P; ++j, ++k)
      if ((k / s) % 10 != 9) (f2[k] = (f2[k] + mo - f2[j]) % mo);
  }
  long long ans = 0;
  for (int i = 1; i < P; ++i) ans = ans ^ (1ll * i * f2[i]);
  cout << ans;
  return 0;
}
