#include <iostream>
#include <string>
#define CZYPARZY(p) p[p.length()-1]%2==0 ? true : false
using namespace std;
unsigned long long x, n, akr=0;
string y, zad="";
void DzielPrzezDwa(string& my) //dzieli przez 2, ale dostaje do przerobienia tylko liczby parzyste
{
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 OdejmijJeden(string& my) //odejmuje 1, dziala na liczbach nieparzystych
{
my[my.length()-1] -= 1;
}
void WykazZadan(string& my) //tworzy rozspiske zadan do rekonstrukcji liczby
{
while(my!="1")
{
if(CZYPARZY(my))
{
DzielPrzezDwa(my);
zad += "2";
}
else
{
OdejmijJeden(my);
zad += "1";
}
}
zad += "0";
}
void AktualnaReszta(string& ins) //odczytuje instrukcje do wykonania z zad
{
for(int i = (ins.length()-1); i>=0; i--)
{
switch(ins[i])
{
case 50: akr = (akr * akr) % n; break;
case 49: akr = (akr * x) % n; break;
case 48: akr = x % n; break;
}
}
}
int main()
{
int t;
cin >> t;
while(t--)
{
akr=0;
zad="";
cin >> x >> y >> n;
WykazZadan(y);
AktualnaReszta(zad);
cout << akr << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojZGVmaW5lIENaWVBBUlpZKHApIHBbcC5sZW5ndGgoKS0xXSUyPT0wID8gdHJ1ZSA6IGZhbHNlCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1bnNpZ25lZCBsb25nIGxvbmcgeCwgbiwgYWtyPTA7CnN0cmluZyB5LCB6YWQ9IiI7Cgp2b2lkIER6aWVsUHJ6ZXpEd2Eoc3RyaW5nJiBteSkgLy9kemllbGkgcHJ6ZXogMiwgYWxlIGRvc3RhamUgZG8gcHJ6ZXJvYmllbmlhIHR5bGtvIGxpY3pieSBwYXJ6eXN0ZQp7CiAgICBpbnQgYSwgYj0wOwogICAgZm9yKGludCBpPTA7IGk8bXkubGVuZ3RoKCk7IGkrKykKICAgIHsKICAgICAgICBhID0gKGludClteVtpXSAtIDQ4ICsgYjsKICAgICAgICBiID0gMDsKICAgICAgICBteVtpXSA9IChhLzIpICsgNDg7CiAgICAgICAgaWYoYSUyPT0xKSBiID0gMTA7CiAgICB9CiAgICBpZihteVswXT09NDgpIG15LmVyYXNlKDAsIDEpOwp9Cgp2b2lkIE9kZWptaWpKZWRlbihzdHJpbmcmIG15KSAvL29kZWptdWplIDEsIGR6aWFsYSBuYSBsaWN6YmFjaCBuaWVwYXJ6eXN0eWNoCnsKICAgIG15W215Lmxlbmd0aCgpLTFdIC09IDE7Cn0KCnZvaWQgV3lrYXpaYWRhbihzdHJpbmcmIG15KSAvL3R3b3J6eSByb3pzcGlza2UgemFkYW4gZG8gcmVrb25zdHJ1a2NqaSBsaWN6YnkKewogICAgd2hpbGUobXkhPSIxIikKICAgIHsKICAgICAgICBpZihDWllQQVJaWShteSkpCiAgICAgICAgewogICAgICAgICAgICBEemllbFByemV6RHdhKG15KTsKICAgICAgICAgICAgemFkICs9ICIyIjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgT2Rlam1pakplZGVuKG15KTsKICAgICAgICAgICAgemFkICs9ICIxIjsKICAgICAgICB9CiAgICB9CiAgICB6YWQgKz0gIjAiOwp9Cgp2b2lkIEFrdHVhbG5hUmVzenRhKHN0cmluZyYgaW5zKSAvL29kY3p5dHVqZSBpbnN0cnVrY2plIGRvIHd5a29uYW5pYSB6IHphZAp7CiAgICBmb3IoaW50IGkgPSAoaW5zLmxlbmd0aCgpLTEpOyBpPj0wOyBpLS0pCiAgICB7CiAgICAgICAgc3dpdGNoKGluc1tpXSkKICAgICAgICB7CiAgICAgICAgICAgIGNhc2UgNTA6IGFrciA9IChha3IgKiBha3IpICUgbjsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgNDk6IGFrciA9IChha3IgKiB4KSAlIG47IGJyZWFrOwogICAgICAgICAgICBjYXNlIDQ4OiBha3IgPSB4ICUgbjsgYnJlYWs7CiAgICAgICAgfQogICAgfQp9CgoKaW50IG1haW4oKQp7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgd2hpbGUodC0tKQogICAgewogICAgICAgIGFrcj0wOwogICAgICAgIHphZD0iIjsKICAgICAgICBjaW4gPj4geCA+PiB5ID4+IG47CiAgICAgICAgV3lrYXpaYWRhbih5KTsKICAgICAgICBBa3R1YWxuYVJlc3p0YSh6YWQpOwogICAgICAgIGNvdXQgPDwgYWtyIDw8IGVuZGw7CiAgICB9Cn0=