import java.util.*;
import static java.lang.Math.*;
public class Main {
private static Map<Integer, Boolean> s_PrimesInfo;
static
{
s_PrimesInfo = new HashMap<Integer, Boolean>();
}
private static boolean IsPrime(int x)
{
Boolean result = s_PrimesInfo.get(x);
if (result != null)
return result;
int mid = (int)sqrt(x);
result = true;
for (int i = 2; i <= mid; ++i)
if ((x % i) == 0)
result = false;
s_PrimesInfo.put(x, result);
return result;
}
private static void GetTwoPrimes(int x, List<Integer> results)
{
int mid = x/2;
for (int i = 2; i <= mid; ++i)
{
if (IsPrime(i) && IsPrime(x - i))
{
results.add(i);
results.add(x - i);
return;
}
}
}
private static List<Integer> GetFourPrimes(int x)
{
if (x <= 7)
return null;
List<Integer> results = new LinkedList<Integer>();
results.add(2);
x -= 2;
if ((x % 2) == 0)
{
results.add(2);
x -= 2;
}
else
{
results.add(3);
x -= 3;
}
GetTwoPrimes(x, results);
return results;
}
private static void Handle(int x)
{
List<Integer> results = GetFourPrimes(x);
if (results == null)
System.out.println("Impossible.");
else
System.out.println(results.get(0) + " " + results.get(1) + " " + results.get(2) + " " + results.get(3));
}
public static void main(String[] args)
{
Scanner inScanner = new Scanner(System.in);
while (inScanner.hasNextInt())
{
int a = inScanner.nextInt();
Handle(a);
}
}
}