甚至全都开了long long
#include <bits/stdc++.h>
using namespace std;
const long long MOD=666623333;
long long prime[1000010],t;
long long l,r,ans;
bool is_prime[1000010];
long long bigprime[1000010];
long long phi[1000010];
void oral_prime ()
{
for (long long i=1;i<=1000000;i++)
is_prime[i]=true;
for (long long i=2;i<=1000000;i++) {
if (is_prime[i]==true) prime[++t]=i;
for (long long j=1;j<=t && prime[j]*i<=1000000;j++) {
is_prime[i*prime[j]]=false;
if (i%prime[j]==0) break;
}
}
}
int main()
{
oral_prime();
scanf("%lld%lld",&l,&r);
for (long long i=l;i<=r;i++) {
bigprime[i-l]=i;
phi[i-l]=i;
}
for (long long i=1;i<=t;i++) {
for (long long j=max(prime[i]*prime[i],((l%prime[i]==0)?l:(l/prime[i]*prime[i]+prime[i])));j<=r;j+=prime[i]) {
phi[j-l]=(phi[j-l]/prime[i]*(prime[i]-1))%MOD;
while (bigprime[j-l]%prime[i]==0) bigprime[j-l]/=prime[i];
}
}
for (long long i=l;i<=r;i++)
if (bigprime[i-l]!=1) phi[i-l]=(phi[i-l]/bigprime[i-l]*(bigprime[i-l]-1))%MOD;
for (long long i=l;i<=r;i++) {
ans=ans-phi[i-l]+i;
ans%=MOD;
}
printf("%lld",ans%MOD);
return 0;
}