#从中间开始找的话就是保证两个数差距最小,然后再分别判断两个数是不是质数,就可以了
import math
def isPrime(num):
    for i in range(2,int(math.sqrt(num))+1):
        if num%i==0:
            return False
    return True
while True:
    try:
        n=int(input())
        a=int(n/2)
        while a<n-2:
            b=n-a
            if isPrime(a) and isPrime(b):
                print(b)
                print(a)
                break
            a+=1
    except:
        break


#include <iostream>
#include <cmath>

using namespace std;
bool isPrime(int num){
    for(int i=2;i<=sqrt(num*1.0);i++){
        if(num%i==0)
            return false;
    }
    return true;
}
int main(){
    int n;
    int res1,res2;
    while(cin >> n){
        if(n<2)
            return 1;
        else{
            for(int i=1;i<=n/2;i++){
               if(isPrime(i) && isPrime(n-i)) {
                   res1=i;
                   res2=n-i;//两个数还不能交换,必须这样输出
            }
        }
        cout << res1 << endl;
        cout << res2 << endl;
        }

    }
    return 0;
}