#include <iostream>
#include <string>
using namespace std;
unsigned long long x, n, akr=0;
string y, zad="";
void DzielPrzezDwa(string& my)
{
int a, b=0;
for(int i=0; i<my.length(); i++)
{
a = (int)my[i] - 48 + b;
b = 0;
my[i] = (a/2) + 48;
if(a%2==1) b = 10;
}
if(my[0]==48) my.erase(0, 1);
}
void Licz(string& my)
{
while(my!="1")
{
if(my[my.length()-1]%2==1)
{
akr *= x;
akr %= n;
}
x *= x;
x %= n;
DzielPrzezDwa(my);
}
akr *= x;
akr %= n;
x *= x;
x %= n;
}
int main()
{
int t;
cin >> t;
while(t--)
{
akr=1;
zad="";
cin >> x >> y >> n;
Licz(y);
cout << akr << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdW5zaWduZWQgbG9uZyBsb25nIHgsIG4sIGFrcj0wOwpzdHJpbmcgeSwgemFkPSIiOwoKdm9pZCBEemllbFByemV6RHdhKHN0cmluZyYgbXkpCnsKICAgIGludCBhLCBiPTA7CiAgICBmb3IoaW50IGk9MDsgaTxteS5sZW5ndGgoKTsgaSsrKQogICAgewogICAgICAgIGEgPSAoaW50KW15W2ldIC0gNDggKyBiOwogICAgICAgIGIgPSAwOwogICAgICAgIG15W2ldID0gKGEvMikgKyA0ODsKICAgICAgICBpZihhJTI9PTEpIGIgPSAxMDsKICAgIH0KICAgIGlmKG15WzBdPT00OCkgbXkuZXJhc2UoMCwgMSk7Cn0KCnZvaWQgTGljeihzdHJpbmcmIG15KQp7CiAgICB3aGlsZShteSE9IjEiKQogICAgewogICAgICAgIGlmKG15W215Lmxlbmd0aCgpLTFdJTI9PTEpCiAgICAgICAgewogICAgICAgICAgICBha3IgKj0geDsKICAgICAgICAgICAgYWtyICU9IG47CiAgICAgICAgfQogICAgICAgIHggKj0geDsKICAgICAgICB4ICU9IG47CgogICAgICAgIER6aWVsUHJ6ZXpEd2EobXkpOwogICAgfQogICAgYWtyICo9IHg7CiAgICBha3IgJT0gbjsKICAgIHggKj0geDsKICAgIHggJT0gbjsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKQogICAgewogICAgICAgIGFrcj0xOwogICAgICAgIHphZD0iIjsKICAgICAgICBjaW4gPj4geCA+PiB5ID4+IG47CiAgICAgICAgTGljeih5KTsKICAgICAgICBjb3V0IDw8IGFrciA8PCBlbmRsOwogICAgfQp9Cg==