#include <bits/stdc++.h>
using namespace std;
bitset<300000100 / 3> bset;
long long n, a, b, c, d;
long long get(long long p) {
  long long tot = 0;
  long long temp = p;
  while (temp <= n) {
    tot = (tot + (n / temp) + 4294967296) % 4294967296;
    temp *= p;
  }
  long long t0 = d;
  long long t1 = p;
  long long t2 = (t1 * p + 4294967296) % 4294967296;
  long long t3 = (t2 * p + 4294967296) % 4294967296;
  t1 = (t1 * c + 4294967296) % 4294967296;
  t2 = (t2 * b + 4294967296) % 4294967296;
  t3 = (t3 * a + 4294967296) % 4294967296;
  long long res = (t0 + t1 + t2 + t3 + 4294967296) % 4294967296;
  res = (res * tot + 4294967296) % 4294967296;
  return res;
}
int toind(int p) {
  if (p % 6 == 5) return 2 * (((p + 1) / 6) - 1);
  return (p - 4) / 3;
}
int main() {
  scanf(" %d%d%d%d%d", &n, &a, &b, &c, &d);
  long long ans = 0;
  if (n >= 2) ans += get(2);
  if (n >= 3) ans += get(3);
  for (int i = 4; i <= n; i++) {
    if (i % 6 != 5 && i % 6 != 1) continue;
    if (bset[toind(i)] == 0) {
      for (int j = i; j <= n; j += i)
        if (j % 6 == 5 || j % 6 == 1) bset[toind(j)] = 1;
      ans = (ans + get(i) + 4294967296) % 4294967296;
    }
  }
  printf("%lld\n", ans);
}
