from bisect import bisect_left
from sympy import sieve
N=20000000
d={0:[0]}
c=s=0
for m in sieve.mobiusrange(1,N+1):
s+=m
if m:
c+=1
if s in d:
d[s].append(c)
else:
d[s]=[c]
print("initialization completed, start computing...")
res=0
for i,a in enumerate(d):
res+=sum(len(d[a])*(len(d[a])-1)//2 if a==b else len(d[b])*len(d[a])-sum(bisect_left(d[b],k+199*abs(b-a)) for k in d[a]) for b in d)
print(f"{i}/{len(d)} completed, current sum: {res}")
print(res)