#include <iostream>
#include <time.h>
#include <stack>
#include <fstream>
#include <ctype.h>
#include <algorithm>
#include <math.h>
using namespace std;
int change(string &s, int n)
{
int result, i, j;
result = 0;
for(i = s.size() - 1; i >= 0; i--)
{
if(isalpha(s[i]))
{
switch(toupper(s[i]))
{
case 'A':
j = 10;
break;
case 'B':
j = 11;
break;
case 'C':
j = 12;
break;
case 'D':
j = 13;
break;
case 'E':
j = 14;
break;
case 'F':
j = 15;
break;
default:
j = 0;
break;
}
}
else
j = s[i] - '0';
result += j * pow(n, s.size() - i - 1);
}
return result;
}
string change2(int num, int n)
{
stack<int> temp;
int i, j;
while(num != 0)
{
i = num / n;
j = num % n;
temp.push(j);
num = i;
}
string s;
while(!temp.empty())
{
i = temp.top();
temp.pop();
s += i + '0';
}
return s;
}
int main()
{
int n, j, k;
string s, temp, temp2, temp3;
cin >> n;
cin >> s;
int i = 0;
while(s != temp && i < 30)
{
temp2 = "";
temp3 = "";
temp = "";
j = change(s, n);
reverse_copy(s.begin(), s.end(), inserter(temp2, temp2.begin()));
k = change(temp2, n);
cout << k << endl;
temp3 = change2(j + k, n);
s = temp3;
cout << s << endl;
reverse_copy(s.begin(), s.end(), inserter(temp, temp.begin()));
i++;
}
if(i < 30)
cout << i << endl;
else
cout << "Impossible" << endl;
return 0;
}