#include<bits/stdc++.h>
using namespace std;
const long long MOD=1e9+7;
long long n;
long long nhan(long long a, long long b, long long c)
{
if(b==0ll) return 0ll;
long long t = nhan(a,b/2,c);
if(b%2==0)
{
return (t+t)%c;
}
else
{
return ((t+t)%c + a%c)%c;
}
}
long long mu (long long a, long long b, long long c)
{
if(b==0) return 1ll;
long long t= mu(a,b/2,c);
if(b%2==0)
{
return nhan(t,t,c);
}
else
{
return nhan(nhan(t,t,c),a,c);
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
long long du0 = n/3;
long long du1= n/3 + (n%3>0);
long long du2= n/3 + (n%3>1);
long long ans0= mu(4,du0,MOD);
long long ans1= mu(3,du1,MOD);
long long ans2 =mu(3,du2,MOD);
cout << nhan(nhan(ans0,ans1,MOD),ans2,MOD);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1PRD0xZTkrNzsKbG9uZyBsb25nIG47CmxvbmcgbG9uZyBuaGFuKGxvbmcgbG9uZyBhLCBsb25nIGxvbmcgYiwgbG9uZyBsb25nIGMpCnsKICAgIGlmKGI9PTBsbCkgcmV0dXJuIDBsbDsKICAgIGxvbmcgbG9uZyB0ID0gbmhhbihhLGIvMixjKTsKICAgIGlmKGIlMj09MCkKICAgIHsKICAgICAgICByZXR1cm4gKHQrdCklYzsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXR1cm4gKCh0K3QpJWMgKyBhJWMpJWM7CiAgICB9Cn0KbG9uZyBsb25nIG11IChsb25nIGxvbmcgYSwgbG9uZyBsb25nIGIsIGxvbmcgbG9uZyBjKQp7CiAgICBpZihiPT0wKSByZXR1cm4gMWxsOwogICAgbG9uZyBsb25nIHQ9IG11KGEsYi8yLGMpOwogICAgaWYoYiUyPT0wKQogICAgewogICAgICAgIHJldHVybiBuaGFuKHQsdCxjKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICByZXR1cm4gbmhhbihuaGFuKHQsdCxjKSxhLGMpOwogICAgfQp9CmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CiAgICBjaW4gPj4gbjsKICAgIGxvbmcgbG9uZyBkdTAgPSBuLzM7CiAgICBsb25nIGxvbmcgZHUxPSBuLzMgKyAobiUzPjApOwogICAgbG9uZyBsb25nIGR1Mj0gbi8zICsgKG4lMz4xKTsKICAgIGxvbmcgbG9uZyBhbnMwPSBtdSg0LGR1MCxNT0QpOwogICAgbG9uZyBsb25nIGFuczE9IG11KDMsZHUxLE1PRCk7CiAgICBsb25nIGxvbmcgYW5zMiA9bXUoMyxkdTIsTU9EKTsKICAgIGNvdXQgPDwgbmhhbihuaGFuKGFuczAsYW5zMSxNT0QpLGFuczIsTU9EKTsKfQo=