#include <bits/stdc++.h>
using namespace std;
const int P = 1e9 + 7;
inline int add(int a, int b) {
  if ((a += b) >= P) a -= P;
  return a;
}
inline int sub(int a, int b) {
  if ((a -= b) < 0) a += P;
  return a;
}
inline int mul(int a, int b) { return 1ll * a * b % P; }
inline int kpow(int a, int b) {
  int r = 1;
  for (; b; b >>= 1, a = mul(a, a)) {
    if (b & 1) r = mul(r, a);
  }
  return r;
}
const int N = 202020, M = 505050;
vector<int> fac[M];
int n, q;
int a[N];
int LOG[N];
bool vis[N];
int num[M];
void add(int x) {
  num[1]++;
  for (int msk = (1); msk < ((1ll << ((int)fac[x].size()))); msk++) {
    int t = 1;
    for (int i = msk; i; i -= i & -i) {
      t = t * fac[x][LOG[i & -i]];
    }
    num[t]++;
  }
}
void del(int x) {
  num[1]--;
  for (int msk = (1); msk < ((1ll << ((int)fac[x].size()))); msk++) {
    int t = 1;
    for (int i = msk; i; i -= i & -i) {
      t = t * fac[x][LOG[i & -i]];
    }
    num[t]--;
  }
}
long long cal(int x) {
  long long res = num[1];
  for (int msk = (1); msk < ((1ll << ((int)fac[x].size()))); msk++) {
    int t = 1, cnt = 0;
    for (int i = msk; i; i -= i & -i) {
      t = t * fac[x][LOG[i & -i]];
      cnt++;
    }
    if (cnt & 1)
      res -= num[t];
    else
      res += num[t];
  }
  return res;
}
void solve() {
  for (int i = (2); i < (M); i++) {
    int t = i;
    for (int j = 2; j * j <= t; j++) {
      if (t % j == 0) {
        fac[i].push_back(j);
        while (t % j == 0) t /= j;
      }
    }
    if (t != 1) fac[i].push_back(t);
  }
  for (int i = (2); i < (N); i++) LOG[i] = LOG[i >> 1] + 1;
  scanf("%d%d", &n, &q);
  for (int i = (0); i < (n); i++) scanf("%d", a + i);
  long long ans = 0;
  for (int quq = (0); quq < (q); quq++) {
    int x;
    long long d;
    scanf("%d", &x);
    x--;
    if (vis[x]) {
      del(a[x]);
      d = -cal(a[x]);
    } else {
      d = cal(a[x]);
      add(a[x]);
    }
    vis[x] ^= 1;
    ans += d;
    printf("%lld\n", ans);
  }
}
int main() {
  solve();
  return 0;
}
