#include<iostream>
using namespace std;
const long long tmp=10000007;
int qpow(long long i)
{
long long ras=1;
long long j=i;
while(i>0)
{
if(i&1==1)
{
//ras*=(j%tmp);
ras=ras*j%tmp;
}
//j*=(j%tmp);
j=j*j%tmp;
i>>=1;
}
return ras;
}
int main()
{
long long x;
long long sum;
while(cin>>x)
{
sum=0;
while(x>=1)
{
sum=(sum+qpow(x))%tmp;
x--;
}
cout<<(sum+1)%tmp<<endl;
}
}
#include<iostream>
using namespace std;
const long long tmp=100000007;
typedef long long LL;
int qpow(int i)
{
int ras=1;
int j=i;
while(i>0)
{
if(i&1==1)
{
ras=(LL)j*ras%tmp;
}
j=(LL)j*j%tmp;
i>>=1;
}
return ras;
}
int main()
{
int x;
int sum;
while(cin>>x)
{
sum=0;
while(x>=1)
{
sum=((LL)sum+qpow(x))%100000007;
x--;
}
cout<<(sum+1)%100000007<<endl;
}
}