#include<bits/stdc++.h>
using namespace std;
int n,k,p;int maxfacsum=-1;
vector<int> ppp;
vector<int> opt,temp;
void dfs(int index,int num,int sum,int facsum){
if(sum==n&&num==k){
if(facsum>maxfacsum){
maxfacsum=facsum;
opt=temp;
}
return;
}
if(sum>n||num>k) return;
if(index-1>=0){
temp.push_back(index);
dfs(index,num+1,sum+ppp[index],facsum+index);
temp.pop_back();
dfs(index-1,num,sum,facsum);
}
}
int main()
{
//freopen("in.txt","r",stdin);
cin>>n>>k>>p;
int i=0;
while(pow(i,p)<=n){
ppp.push_back(pow(i,p));
i++;
}
dfs(ppp.size()-1,0,0,0);
if(opt.size()==0){ cout<<"Impossible"<<endl;return 0;}
cout<<n<<" = ";
for(int i=0;i<opt.size();i++){
if(i==0) cout<<opt[0]<<"^"<<p;
else cout<<" + "<<opt[i]<<"^"<<p;
}
return 0;
}