#include <bits/stdc++.h>
void func(long long *p, long long n) {
  long long i, j = 0, k = n / 2, a[n];
  if (n == 1) return;
  func(p, n / 2);
  func(p + n / 2, n - n / 2);
  for (i = 0; i < n; i++) {
    if ((*(p + j)) < (*(p + k)) && j < (n / 2)) {
      a[i] = *(p + j);
      j++;
    } else if ((*(p + j)) >= (*(p + k)) && k < n) {
      a[i] = *(p + k);
      k++;
    } else if (j == (n / 2)) {
      a[i] = *(p + k);
      k++;
    } else {
      a[i] = *(p + j);
      j++;
    }
  }
  for (i = 0; i < n; i++) *(p + i) = a[i];
}
int main() {
  long long n, a[100000], i, s = 0;
  scanf("%I64d", &n);
  for (i = 0; i < n; i++) scanf("%I64d", &a[i]);
  func(a, n);
  for (i = 0; i < n; i++) {
    s += a[i] * a[n - i - 1];
    if (s >= 10007) s %= 10007;
  }
  printf("%I64d", s);
}
