#include <bits/stdc++.h>
#define isz(x) (int)(x).size()
typedef std::pair<int,int> pii;
typedef long long ll;
namespace Solution {
const ll MAX = 100000LL * 100000;
ll squares[1+100000LL];
std::vector<ll> queries;
std::vector<pii> answers;
void init(const std::vector<ll>& queries_) {
queries = queries_;
answers.resize(isz(queries));
for (int i = 0; i <= 100000LL; ++i) {
squares[i] = 1LL * i * i;
}
}
pii solve_one(const ll p) {
int back = 100000;
for (int i = 1; i <= back && squares[i] <= p; ++i) {
while (squares[i] + squares[back] > p) { --back; }
if (squares[i] + squares[back] == p) {
return pii(i,back);
}
}
return pii(0,0);
}
void solve_all() {
for (int i = 0; i < isz(queries); ++i) {
answers[i] = solve_one(queries[i]);
}
}
}
void worst_test(int n) {
Solution::init(std::vector<ll>(n, Solution::MAX-1));
Solution::solve_all();
assert(Solution::answers[n/2].first != -2);
std::exit(0);
}
int main() {
//worst_test(10000);
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int t; std::cin >> t;
std::vector<ll> queries(t);
for (auto &it : queries) { std::cin >> it; }
Solution::init(queries);
Solution::solve_all();
for (int i = 0; i < t; ++i) {
auto res = Solution::answers[i];
std::cout << "Case " << i+1 << ": ";
if (res.first == 0 || res.second == 0) {
std::cout << "Impossible\n";
} else {
std::cout << res.first << " " << res.second << "\n";
}
}
return 0;
}