N,mod=map(int,input().split()) p=[0]*(N+1) v=[0]*(N+1) p[N]=1 v[N]=pow(N,-1,mod) G=[[] for i in range(N+1)] for x in range(2,N): for y in range(1,N+1): if x*y>N: break G[x*y].append(x) u=[0]*(N+1) for x in range(1,N+1): for y in range(1,N+1): if x*y>N: break u[x*y]+=1 v[N]=pow((N-u[x]),-1,mod) for x in range(N-1,1,-1): for y in G[x]: l,r=x+1,x+y e=v[x+1] if r<=N: e-=v[r] e%=mod p[x]+=e p[x]%=mod if x>2: v[x]=v[x+1]+p[x]*pow((x-u[x]),-1,mod) v[x]%=mod result=0 for x in range(3,N+1): result+=p[x] b=u[x]*pow(x,-1,mod) b%=mod b=1-b result+=(pow(b,-1,mod)-1)*p[x] result%=mod print(result)