#include <stdio.h>
#define N 10000000
typedef long long LL;
using namespace std ;
LL primes[N];
//bool flag[N];
void sieve(LL n)
{
for(LL i=4; i<=n; i+=2)
{
    primes[i]=1;
}
//LL p=(LL)sqrt(n);
for(LL i=3; i*i<=n; i+=2)
{
    if(primes[i])
   
    continue;
        //primes[cnt++]=i;
    //    if(i <= n/i)
    //    {
            for(LL j=i*i; j<=n; j+=i*2)
            {
                primes[j] = 1;
            }
    //    }
    }
return ;
}
/*bool isprimes(LL x)
{
    for(LL i=0;;i++)
    {
        if(primes[i]*primes[i] >x )
        break;
        if(x%primes[i]==0)
        return false;
    }
    return true;
}*/
void res(LL x)
{
    for(LL i=2;;i++)
    {
    //LL p1=primes[i];
//    LL p2= primes[x-i];
        if( !primes[i] && !primes[x-i] )
        {
            printf("%lld %lld",i,x-i );
            break;
        }
    }
}
int main()
{
    LL n;
    sieve(N);
    while(scanf("%lld",&n)!=EOF){
        if(n<=7){
            printf("Impossible.");
            continue;
        }
        if(n&1){
            printf("2 3 ");
            res(n-5);
        }
        else{
            printf("2 2 ");
            res(n-4);
        }
        puts("");
    }
     return 0 ;
}
 
			 
			
0 Comments