#include <cstdio>
#include <cmath>
#include <map>
long long T, k;
long long y, z, p;
namespace calc1 {long long calc (long long base, long long p, long long mod) {base %= mod, p %= mod - 1;long long ans = 1;for (; p; p >>= 1, base = base * base % mod) if (p & 1) ans = ans * base % mod;return ans;}long long inv(long long a, long long mod) {return calc(a, mod - 2, mod);}
}
namespace calc2 {long long calc (long long y, long long z, long long mod) {y %= mod, z %= mod;if (!y) return z ? -1 : 0;long long tmp = calc1::inv(y, mod);return tmp * z % mod;}
}
namespace calc3 {std::map<int, int> mp;long long calc(long long y, long long z, long long mod) {y %= mod, z %= mod;if (!y) return -1;long long tmp = 1, t = sqrt(mod - 1) + 1; mp.clear();for (int i = 0; i <= t; i++) {mp[tmp * z % mod] = i;if (i != t) tmp = tmp * y % mod;}long long tmp6 = tmp;for (int i = 1; i <= t; i++) {if (mp.count(tmp6)) return i * t - mp[tmp6];tmp6 = tmp6 * tmp % mod;}return -1;}
}
int main() {scanf("%lld%lld", &T, &k);while (T --> 0) {scanf("%lld%lld%lld", &y, &z, &p);long long tmp;switch (k) {case 1: tmp = calc1::calc(y, z, p); break;case 2: tmp = calc2::calc(y, z, p); break;case 3: tmp = calc3::calc(y, z, p); break;}if (tmp == -1) puts("Orz, I cannot find x!");else printf("%lld\n", tmp);}
}