#include <bits/stdc++.h>
using namespace std;
long long int gcd(long long int a, long long int b) {
  return b ? gcd(b, a % b) : a;
}
long long int lcm(long long int a, long long int b) {
  return a * b / gcd(a, b);
}
const int N = 1e6 + 10;
const int mod = 1e9 + 7;
int a[N], freq[N], ans[N], n;
long long int pw(long long int a, long long int b) {
  long long int res = 1;
  while (b) {
    if (b & 1) res = ((res % mod) * (a % mod)) % mod;
    a = ((a % mod) * (a % mod)) % mod;
    b >>= 1;
  }
  return res;
}
long long int mul(long long int a, long long int b) {
  return ((a % mod) * (b % mod)) % mod;
}
long long int sub(long long int a, long long int b) {
  a -= b;
  if (a < 0) a += mod;
  return a;
}
long long int add(long long int a, long long int b) {
  return ((a % mod) + (b % mod)) % mod;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d", a + i), freq[a[i]]++;
  sort(a + 1, a + n + 1);
  for (int i = 2; i < N; i++) {
    int cntr = 0;
    for (int j = i; j < N; j += i) cntr += freq[j];
    if (!cntr) continue;
    ans[i] = mul(pw(2, cntr - 1), cntr);
  }
  long long int res = 0;
  for (int i = N - 1; i > 1; i--) {
    for (int j = 2 * i; j < N; j += i) ans[i] = sub(ans[i], ans[j]);
    res = add(res, mul(ans[i], i));
  }
  printf("%lld\n", res);
  return 0;
}
