#include<stdio.h>
#include<math.h>
long long int power(int x,long long int y)
{
long long int temp;
if( y == 0)
return 1;
temp = power(x, y/2);
if (y%2 == 0)
return temp*temp;
else
{
if(y > 0)
return x*temp*temp;
else
return (temp*temp)/x;
}
}
int main()
{
int t;
while(t--)
{
long long int n,d,carry=0,i,sum;
int arr[n+1];
for(i=0;i<n;i++)
{
int s=d*d+carry;
sum=s%10;
carry=s/10;
arr[i]=sum;
if(i!=0)
arr[i]+=arr[i-1];
}
arr[i]=carry+arr[i-1];
long long int m=2*n,res=0,t=0, f,fr,j=0,carry2=0;
for(i=0;i<m;i++)
{
if(t<n)
{
f=arr[t];
t++;
}
else
{
f=arr[t]-arr[j];
j++;
}
f=f+carry2;
fr=f%10;
carry2=f/10;
res+=(power(23,m-i-1)*fr)%1000000007;
}
printf("%lld\n",res
%1000000007);
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8bWF0aC5oPgpsb25nIGxvbmcgaW50IHBvd2VyKGludCB4LGxvbmcgbG9uZyBpbnQgeSkKewogICAgbG9uZyBsb25nIGludCB0ZW1wOwogICAgaWYoIHkgPT0gMCkKICAgICAgIHJldHVybiAxOwogICAgdGVtcCA9IHBvd2VyKHgsIHkvMik7ICAgICAgIAogICAgaWYgKHklMiA9PSAwKQogICAgICAgIHJldHVybiB0ZW1wKnRlbXA7CiAgICBlbHNlCiAgICB7CiAgICAgICAgaWYoeSA+IDApCiAgICAgICAgICAgIHJldHVybiB4KnRlbXAqdGVtcDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiAodGVtcCp0ZW1wKS94OwogICAgfQp9ICAKIAppbnQgbWFpbigpCnsKCmludCB0OwpzY2FuZigiJWQiLCZ0KTsKd2hpbGUodC0tKQp7CiAgICBsb25nIGxvbmcgaW50IG4sZCxjYXJyeT0wLGksc3VtOwogICAgc2NhbmYoIiVsbGQlbGxkIiwmbiwmZCk7CiAgICBpbnQgYXJyW24rMV07CiAgICBmb3IoaT0wO2k8bjtpKyspCiAgICB7CiAgICAgICAgaW50IHM9ZCpkK2NhcnJ5OwogICAgICAgIHN1bT1zJTEwOwogICAgICAgIGNhcnJ5PXMvMTA7CiAgICAgICAgYXJyW2ldPXN1bTsKICAgICAgICBpZihpIT0wKQogICAgICAgIGFycltpXSs9YXJyW2ktMV07CiAgICB9CiAgICBhcnJbaV09Y2FycnkrYXJyW2ktMV07CiAgICAKICAgIGxvbmcgbG9uZyBpbnQgbT0yKm4scmVzPTAsdD0wLCBmLGZyLGo9MCxjYXJyeTI9MDsKICAgIGZvcihpPTA7aTxtO2krKykKICAgIHsKICAgICAgICAgaWYodDxuKQogICAgICAgICB7CiAgICAgICAgICAgZj1hcnJbdF07CiAgICAgICAgICAgdCsrOwogICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICBmPWFyclt0XS1hcnJbal07CiAgICAgICAgICAgIGorKzsKICAgICAgICAgfQogICAgICAgICBmPWYrY2FycnkyOwogICAgICAgICBmcj1mJTEwOwogICAgICAgICBjYXJyeTI9Zi8xMDsKICAgICAgICAgcHJpbnRmKCIlbGxkXG4iLGZyKTsKICAgICAgICAKICAgICAgICByZXMrPShwb3dlcigyMyxtLWktMSkqZnIpJTEwMDAwMDAwMDc7CiAgICB9CiAgICBwcmludGYoIiVsbGRcbiIscmVzJTEwMDAwMDAwMDcpOwoKfQpyZXR1cm4gMDsKfQo=