############################################################### #https://atcoder.jp/contests/abc249/submissions/71937223 import math def smallest_prime_facror(n): res=list(range(n+1)) for i in range(2,int(math.isqrt(n))+1): if res[i]==i: for j in range(i*i,n+1,i): if res[j]==j: res[j]=i return res spf=smallest_prime_facror(30000000) def prime_factorization(n): factors={} current=n while current>1: factors[spf[current]]=factors.get(spf[current],0)+1 current//=spf[current] return factors def divisors(n): factors=prime_factorization(n) divs=[1] for p,e in factors.items(): m=len(divs) mul=1 for _ in range(e): mul*=p for i in range(m): divs.append(divs[i]*mul) return divs ############################################################### N,M=map(int,input().split()) L=min(N,M) mod=998244353 H=[1]*(L+1) for k in range(2,L+1): p=spf[k] if k%(p*p)==0: H[k]=H[k//p] else: H[k]=H[k//p]*(1-p)%mod ans=0 for k in range(1,L+1): nk=N//k mk=M//k ans+=k*H[k]*nk*mk*(nk+1)*(mk+1)%mod inv=pow(4,-1,mod) print(ans*inv%mod)