#include using namespace std; #define rep(i, a, b) for (int i =a; i < (b); ++i) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define fo(i, n) rep(i, 0, n) #define F first #define S second #define MP make_pair #define PB push_back typedef long long ll; typedef vector vi; typedef pair pii; typedef vector> vpii; typedef vector> vvi; typedef vector vll; typedef pair pll; typedef vector> vpll; typedef vector> vvll; const int AMAX = 512345; const int SQRT = 716; int tab[AMAX][SQRT]; int bigcntr[AMAX]; int n,k; int in[AMAX]; int sito[AMAX+10]; bool soudel(int a, int b) { return __gcd(a,b) > 1; } int calc(int num) { int bp = sito[num]; if(bp >= SQRT) { int rest = num/bp; return tab[1][rest] + bigcntr[bp] - tab[bp][rest]; } else { return tab[1][num]; } } void modnum(int num, int modif) { int bp = sito[num]; int rest; if(bp >= SQRT) { rest = num/bp; bigcntr[bp] += modif; for(int j=1;j=2 && !sito[i]) { for(int j=2*i; j= n) goto end; cnt += calc(in[j]); modnum(in[j], 1); j++; } //printf("%d %d %lld\n", i, j, cnt); out += n-j+1; modnum(in[i], -1); cnt -= calc(in[i]); //printf("|%lld\n", cnt); } end: printf("%lld\n", out); }