#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const long long maxn = 6e5;
const long long mod = 1e9 + 7;
const long double PI = 4 * atan((long double)1);
const int mods[] = {998244353, 1000000007, 696969569, 1000000009, 998244853};
const int rmod = mods[rng() % 5];
const int rmod2 = mods[rng() % 5];
long long pw(long long a, long long b, long long md = rmod) {
  return (!b ? 1
             : (b & 1 ? a * pw(a * a % md, b / 2, md) % md
                      : pw(a * a % md, b / 2, md) % md));
}
vector<long long> mg[maxn];
long long a[maxn];
long long n, q;
bool mark[maxn];
long long val[maxn];
long long prm[maxn];
long long ans = 0, sz = 0;
long long mp[maxn];
void add(long long x) {
  long long num = a[x];
  long long n = mg[num].size();
  val[x] = sz - 1;
  for (int i = 1; i < pw(2, n); i++) {
    long long prd = 1;
    long long cnt = 0;
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) {
        prd *= (mg[num][j]);
        cnt++;
      }
    }
    if (cnt % 2) {
      val[x] -= mp[prd];
    } else {
      val[x] += mp[prd];
    }
    mp[prd]++;
  }
  ans += val[x];
}
void remove(int x) {
  long long num = a[x];
  long long n = mg[num].size();
  val[x] = sz;
  for (int i = 1; i < pw(2, n); i++) {
    long long prd = 1;
    long long cnt = 0;
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) {
        prd *= (mg[num][j]);
        cnt++;
      }
    }
    mp[prd]--;
    if (cnt % 2) {
      val[x] -= mp[prd];
    } else {
      val[x] += mp[prd];
    }
  }
  ans -= val[x];
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  assert(true);
  for (int i = 2; i < maxn; i++) {
    if (mg[i].empty()) {
      for (int j = i; j < maxn; j += i) {
        mg[j].push_back(i);
        ;
      }
    }
  }
  cin >> n >> q;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  while (q--) {
    long long x;
    cin >> x;
    mark[x] = !mark[x];
    if (mark[x]) {
      if (a[x] == 1) {
        ans += sz;
      }
      sz++;
      if (a[x] != 1) {
        add(x);
      }
    } else {
      sz--;
      if (a[x] == 1) {
        ans -= sz;
      }
      if (a[x] != 1) {
        remove(x);
      }
    }
    cout << ans << '\n';
  }
  return (0);
}
