#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;


#define ull                  unsigned long long
#define ll                   long long
#define ff                   first
#define ss                   second
#define all(v)		         ((v).begin()), ((v).end())
#define allr(v)		         ((v).rbegin()), ((v).rend())
#define pb                    push_back
#define iq(v)                 v.resize(unique(v.begin(),v.end())-v.begin())
#define bye                   return 0
#define yes                   cout << "YES\n"
#define no                    cout << "NO\n"
#define TC                    int t_t=1;cin>>t_t;while (t_t--)
#define endl                  '\n'
#define clr(v,d)              memset(v,d,sizeof(v))
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
const ll OO = LLONG_MAX ;
const ll Mod=1e9+7;
const int N = 1e5+5 ;
void fast()
{
    std::ios_base::sync_with_stdio(0);
    cin.tie(NULL);
#ifndef ONLINE_JUDGE
    freopen("Input.txt", "r", stdin);
    freopen("Output.txt", "w", stdout);
#endif
}
int a[5] ;
ll x =23 ;
bool solve(int idx , ll sum)
{
    if (idx == 5)
    {
        return sum == x ;
    }
    return solve(idx+1 , sum -=a[idx]) ||
           solve(idx+1 , sum +=a[idx]) ||
           solve(idx+1 , sum *=a[idx])   ;
}
int main() {
    fast();
    while (1)
    {
        cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4] ;
        if ( a[0] == 0 && a[1] == 0 && a[2] == 0 && a[3] == 0 && a[4] == 0 ) return 0 ;
        sort(a,a+5) ;
        bool ok = false ;
        do {
            if (solve(1, a[0]))
            {
                ok = 1 ;
                break ;
            }
        }
        while (next_permutation(a,a+5)) ;
        if (ok)
            cout << "Possible\n" ;
        else
            cout << "Impossible\n" ;
    }
   return 0;
}