#include <time.h>
#define ll long long
#define rep(i,l,r)for(ll i=l;i<r;i++)
#define main signed main(){clock_t start=clock();
#define ret printf("\n%.3f sec\n",(double)(clock()-start)/CLOCKS_PER_SEC);return 0;}
#define M 10000000
ll memo[M+10];// memo[n] is length of the recurring cycle of 1/n
ll d[M+10];// d[n] is a smallest prime divisor of n if n is composite, is 0 if n is prime
ll ans;
void maked(ll n){d[0]=-1;d[1]=1;for(int i=2;i*i<=n;i++)if(!d[i])for(int j=i*i;j<=n;j+=i)if(!d[j])d[j]=i;}
int div(ll n
,ll
*a
){int cnt
=0;while(d
[n
]){a
[cnt
++]=d
[n
];n
/=d
[n
];};a
[cnt
++]=n
;return cnt
;} ll pom(ll a,ll n,int m){return n?pom(a%m*(a%m)%m,n/2,m)*(n&1?a%m:1)%m:1;}
ll gcd(ll p,ll q){return q?gcd(q,p%q):p;}
ll lcm(ll p,ll q){return p/gcd(p,q)*q;}
ll f(ll n){
n/=n&-n;
while(n%5==0)n/=5;
if(n==1)return 0;
if(memo[n])return memo[n];
if(!d[n]){
//n is prime
ll a[100],cnt,i=0,s=n-1;
while(i<cnt){
ll m=a[i];
while(a[i]==m){
if(pom(10,s/m,n)==1)s/=m;
i++;
}
}
return memo[n]=s;
}else{
//n is composite
ll s=1,c=0,m=d[n];
while((n/s)%m==0)s*=m,c++;
if(n==s){
//n is power of prime
if(pom(10,memo[n/m],n)==1)return memo[n]=memo[n/m];
else return memo[n]=memo[n/m]*m;
}else{
//otherwise
return memo[n]=lcm(memo[s],memo[n/s]);
}
}
}
main
maked(M);
rep(i,2,M+1)ans+=f(i);
ret
I2luY2x1ZGUgPHRpbWUuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSByZXAoaSxsLHIpZm9yKGxsIGk9bDtpPHI7aSsrKQojZGVmaW5lIG1haW4gc2lnbmVkIG1haW4oKXtjbG9ja190IHN0YXJ0PWNsb2NrKCk7CiNkZWZpbmUgcmV0IHByaW50ZigiXG4lLjNmIHNlY1xuIiwoZG91YmxlKShjbG9jaygpLXN0YXJ0KS9DTE9DS1NfUEVSX1NFQyk7cmV0dXJuIDA7fQoKI2RlZmluZSBNIDEwMDAwMDAwCmxsIG1lbW9bTSsxMF07Ly8gbWVtb1tuXSBpcyBsZW5ndGggb2YgdGhlIHJlY3VycmluZyBjeWNsZSBvZiAxL24KbGwgZFtNKzEwXTsvLyBkW25dIGlzIGEgc21hbGxlc3QgcHJpbWUgZGl2aXNvciBvZiBuIGlmIG4gaXMgY29tcG9zaXRlLCBpcyAwIGlmIG4gaXMgcHJpbWUKbGwgYW5zOwoKdm9pZCBtYWtlZChsbCBuKXtkWzBdPS0xO2RbMV09MTtmb3IoaW50IGk9MjtpKmk8PW47aSsrKWlmKCFkW2ldKWZvcihpbnQgaj1pKmk7ajw9bjtqKz1pKWlmKCFkW2pdKWRbal09aTt9CmludCBkaXYobGwgbixsbCphKXtpbnQgY250PTA7d2hpbGUoZFtuXSl7YVtjbnQrK109ZFtuXTtuLz1kW25dO307YVtjbnQrK109bjtyZXR1cm4gY250O30KbGwgcG9tKGxsIGEsbGwgbixpbnQgbSl7cmV0dXJuIG4/cG9tKGElbSooYSVtKSVtLG4vMixtKSoobiYxP2ElbToxKSVtOjE7fQpsbCBnY2QobGwgcCxsbCBxKXtyZXR1cm4gcT9nY2QocSxwJXEpOnA7fQpsbCBsY20obGwgcCxsbCBxKXtyZXR1cm4gcC9nY2QocCxxKSpxO30KCgoKbGwgZihsbCBuKXsKCW4vPW4mLW47Cgl3aGlsZShuJTU9PTApbi89NTsKCWlmKG49PTEpcmV0dXJuIDA7CglpZihtZW1vW25dKXJldHVybiBtZW1vW25dOwoJaWYoIWRbbl0pewoJCS8vbiBpcyBwcmltZQoJCWxsIGFbMTAwXSxjbnQsaT0wLHM9bi0xOwoJCWNudD1kaXYobi0xLGEpOwoJCXdoaWxlKGk8Y250KXsKCQkJbGwgbT1hW2ldOwoJCQl3aGlsZShhW2ldPT1tKXsKCQkJCWlmKHBvbSgxMCxzL20sbik9PTEpcy89bTsKCQkJCWkrKzsKCQkJfQoJCX0KCQlyZXR1cm4gbWVtb1tuXT1zOwoJfWVsc2V7CgkJLy9uIGlzIGNvbXBvc2l0ZQoJCWxsIHM9MSxjPTAsbT1kW25dOwoJCXdoaWxlKChuL3MpJW09PTApcyo9bSxjKys7CgkJaWYobj09cyl7CgkJCS8vbiBpcyBwb3dlciBvZiBwcmltZQoJCQlpZihwb20oMTAsbWVtb1tuL21dLG4pPT0xKXJldHVybiBtZW1vW25dPW1lbW9bbi9tXTsKCQkJZWxzZSByZXR1cm4gbWVtb1tuXT1tZW1vW24vbV0qbTsKCQl9ZWxzZXsKCQkJLy9vdGhlcndpc2UKCQkJcmV0dXJuIG1lbW9bbl09bGNtKG1lbW9bc10sbWVtb1tuL3NdKTsKCQl9Cgl9Cn0KCm1haW4KbWFrZWQoTSk7CnJlcChpLDIsTSsxKWFucys9ZihpKTsKcHJpbnRmKCIlbGxkIixhbnMpOwpyZXQK