```
using namespace std;
typedef long long ll;
ll mod=1e9+7;
ll exp(ll a, ll n){
if(n==0)
return 1;
if(n==1)
return a;
ll r = exp(a, n / 2) % mod;
if (n % 2 == 0)
return (r * r) % mod;
else
return (r * r * a) % mod;
}
int main(){
// ll m = pf(20, 4);
// cout<<m<<"\n";
ll t;
cin>>t;
while(t--){
ll n,a;
cin>>n>>a;
ll psum=0;
ll j=1;
for(int i=0;i<n;i++){
psum += exp(a, j);
psum = psum % mod;
a = (a * exp(a, j)) % mod;
j += 2;
}
cout<<psum<<"\n";
}
}
```

can anyone help me out please i couldnt guess out whats wrong with my code as it is giving wrong answer on submission even though after the correct use of modulo exponentiation ;p

Firstly, Format your code

Secondly, it’s overflow.

Replace

```
return (r * r * a) % mod;
```

with

```
return (((r * r)%mod) * a) % mod;
```

1 Like

int n=in.nextInt();

long a=in.nextLong();

if(n==0){

System.out.println(0);

break;

}

long p[]=new long[n];

long sum=a;

p[0]=a;long h=1;

for(int i=1;i<n;i++){

a=(long)(a*p[i-1]);

p[i]=(long)Math.pow((a),h+2);

sum=sum+p[i]%1000000007;

h+=2;

}

System.out.println(sum);

Help needed can’t find why it’s not working?

yes there was the mistake thanks for the help :3

u have to use fast exponentiation rather than using predefined .math :: power library function

Thanks I got it!