#include <bits/stdc++.h>
using namespace std;
typedef struct STtype {
  int cnt, sum, sqsum;
} ST;
inline ST operator*(const ST& x, const ST& y) {
  return {.cnt = (int)((1LL * (x.cnt + 1) * (y.cnt + 1) - 1LL) % 1000000007LL),
          .sum = (int)((1LL * x.sum * (y.cnt + 1) % 1000000007LL +
                        1LL * y.sum * (x.cnt + 1) % 1000000007LL) %
                       1000000007LL),
          .sqsum = (int)((1LL * x.sqsum * (y.cnt + 1) % 1000000007LL +
                          1LL * y.sqsum * (x.cnt + 1) % 1000000007LL +
                          2LL * x.sum * y.sum % 1000000007LL) %
                         1000000007LL)};
}
int n, x, ans[1000000];
ST st[1000000];
void dc_multi(int dd, ST* a, int k) {
  if (dd == 6)
    ans[k] = (*a).sqsum;
  else {
    int nn = 1, nk = 1, i, j;
    ST *b, *c, *d;
    while (nk < 6 - dd) nn *= 10, nk++;
    ST xpre[nn];
    memset(xpre, 0, nn * sizeof(ST));
    for (i = 10 - 1, b = a + nn * 10; i >= 0; i--, b -= nn) {
      for (j = nn - 1, c = b - 1; j >= 0; j--, c--) xpre[j] = xpre[j] * (*c);
      dc_multi(dd + 1, xpre, k + i * nn);
    }
    for (int i = 0, *b = &ans[k]; i < 10 - 1; i++, b += nn) {
      for (int j = 0, *c = b, *d = b + nn; j < nn; j++, c++, d++)
        *c = ((*c - *d) % 1000000007LL + 1000000007LL) % 1000000007LL;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> x;
    ST v = {.cnt = 1, .sum = x, .sqsum = (int)(1LL * x * x % 1000000007LL)};
    st[x] = st[x] * v;
  }
  dc_multi(0, st, 0);
  long long ansx = 0LL;
  for (int i = 0; i < 1000000; i++) ansx ^= 1LL * i * ans[i];
  cout << ansx << endl;
  return 0;
}
