#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
//while declaration no need to name the variable
//vector<vector<ll> >v2; ///taking a vector v2
vector<vector<ll> >matmul(vector<vector<ll> >v1,vector<vector<ll> >v2,ll M)
{
int n=v1.size();
vector<vector<ll> >c(n,vector<ll>(n));
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
for(int k=0;k<n;k++)
{
c[i][j]=(c[i][j]+v1[i][k]*v2[k][j])%M;
}
}
}
return c;
}
vector<vector<ll> > matpow(vector<vector<ll> >v,ll n,ll M)
{
int size=v.size();
vector<vector<ll> >v2(n,vector<ll>(n));
for(ll i=0;i<n;i++)
v2[i][i]=1;
while(n)
{
if(n%2)
v2=matmul(v2,v,M);
n/=2;
v=matmul(v,v,M);
}
return v2;
}
int main()
{
int t;
ll a,n,m,xx=1;
cin>>t;
for(int i=0;i<t;i++)
{
cin>>a>>n>>m;
vector<vector<ll> >v(2,std::vector<ll>(2)); ///
ll temp=a;int dig=0;
while(temp!=0)
{
dig++;
xx*=10;
temp/=10;
}
v[0][0]=xx%m;
v[0][1]=1;
v[1][0]=0;
v[1][1]=1;
v=matpow(v,n-1,m);
cout<<((v[0][0]+v[0][1])%m*(a%m))%m<<endl;
xx=1;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwogLy93aGlsZSBkZWNsYXJhdGlvbiBubyBuZWVkIHRvICBuYW1lIHRoZSB2YXJpYWJsZSAKLy92ZWN0b3I8dmVjdG9yPGxsPiA+djI7IC8vL3Rha2luZyBhIHZlY3RvciB2MiAKdmVjdG9yPHZlY3RvcjxsbD4gPm1hdG11bCh2ZWN0b3I8dmVjdG9yPGxsPiA+djEsdmVjdG9yPHZlY3RvcjxsbD4gPnYyLGxsIE0pCnsKCWludCBuPXYxLnNpemUoKTsKCXZlY3Rvcjx2ZWN0b3I8bGw+ID5jKG4sdmVjdG9yPGxsPihuKSk7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWZvcihpbnQgaj0wO2o8bjtqKyspCgkJewoJCQlmb3IoaW50IGs9MDtrPG47aysrKQoJCQl7CgkJCQljW2ldW2pdPShjW2ldW2pdK3YxW2ldW2tdKnYyW2tdW2pdKSVNOwoJCQl9CgkJfQoJfQoJcmV0dXJuIGM7Cn0KdmVjdG9yPHZlY3RvcjxsbD4gPiBtYXRwb3codmVjdG9yPHZlY3RvcjxsbD4gPnYsbGwgbixsbCBNKQp7CglpbnQgc2l6ZT12LnNpemUoKTsKCXZlY3Rvcjx2ZWN0b3I8bGw+ID52MihuLHZlY3RvcjxsbD4obikpOwoJZm9yKGxsIGk9MDtpPG47aSsrKQoJICAgIHYyW2ldW2ldPTE7Cgl3aGlsZShuKQoJewoJCWlmKG4lMikKCQkJdjI9bWF0bXVsKHYyLHYsTSk7CgkJbi89MjsKCQl2PW1hdG11bCh2LHYsTSk7Cgl9CglyZXR1cm4gdjI7Cn0KaW50IG1haW4oKQp7CglpbnQgdDsKCWxsIGEsbixtLHh4PTE7CgljaW4+PnQ7Cglmb3IoaW50IGk9MDtpPHQ7aSsrKQoJewoJCWNpbj4+YT4+bj4+bTsKCQl2ZWN0b3I8dmVjdG9yPGxsPiA+digyLHN0ZDo6dmVjdG9yPGxsPigyKSk7IC8vLwkJCgkJbGwgdGVtcD1hO2ludCBkaWc9MDsKCQl3aGlsZSh0ZW1wIT0wKQoJCXsKCQkJZGlnKys7CgkJCXh4Kj0xMDsKCQkJdGVtcC89MTA7CgkJfQoJCXZbMF1bMF09eHglbTsKCQl2WzBdWzFdPTE7CgkJdlsxXVswXT0wOwoJCXZbMV1bMV09MTsKCQl2PW1hdHBvdyh2LG4tMSxtKTsKCQljb3V0PDwoKHZbMF1bMF0rdlswXVsxXSklbSooYSVtKSklbTw8ZW5kbDsKCQkKCQl4eD0xOwoJfQoJcmV0dXJuIDA7Cn0=