Problem: One way to create a task is to learn from math. You can generate some random math statement or modify some theorems to get something new and build a new task from that.

For example, there is a statement called the "Goldbach's conjecture". It says: "each even number no less than four can be expressed as the sum of two primes". Let's modify it. How about a statement like that: "each integer no less than 12 can be expressed as the sum of two composite numbers." Not like the Goldbach's conjecture, I can prove this theorem.

You are given an integer n no less than 12, express it as a sum of two composite numbers.

Input

The only line contains an integer n (12 ≤ n ≤ 106).

Output

Output two composite integers x and y (1 < x, y < n) such that x + y = n. If there are multiple solutions, you can output any of them.

Examples

Input

12


Output

4 8


Input

15


Output

6 9


Input

23


Output

8 15


Input

1000000


Output

500000 500000

Note

In the first example, 12 = 4 + 8 and both 4, 8 are composite numbers. You can output "6 6" or "8 4" as well.

In the second example, 15 = 6 + 9. Note that you can't output "1 14" because 1 is not a composite number.

Solution (in JAVA):

Solution:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.*;

 public class WordCapitalization {
    static class Reader
    {
    BufferedReader r;
    StringTokenizer str;
    Reader()
    {
        r=new BufferedReader(new InputStreamReader(System.in));
    }
    Reader(String fileName) throws FileNotFoundException
    {
        r=new BufferedReader(new FileReader(fileName));
    }
    public String getNextToken() throws IOException
    {
        if(str==null||!str.hasMoreTokens())
    {
        str=new StringTokenizer(r.readLine());
    }
        return str.nextToken();
    }
    public int nextInt() throws IOException
    {
        return Integer.parseInt(getNextToken());
    }
    public long nextLong() throws IOException
    {
        return Long.parseLong(getNextToken());
    }
    public double nextDouble() throws IOException
    {
        return Double.parseDouble(getNextToken());
    }
    public String nextString() throws IOException
    {
        return getNextToken();
    }
    public int[] intArray(int n) throws IOException
    {
        int a[]=new int[n];
        for(int i=0;i<n;i++)
            a[i]=nextInt();
       
        return a;
       
    }
    public long[] longArray(int n) throws IOException
    {
        long a[]=new long[n];
        for(int i=0;i<n;i++)
            a[i]=nextLong();
       
        return a;
       
    }
    public String[] stringArray(int n) throws IOException
    {
        String a[]=new String[n];
        for(int i=0;i<n;i++)
            a[i]=nextString();
       
        return a;
       
    }
    public long gcd(long a, long b) {
        if(b == 0){
            return a;
        }
        return gcd(b, a%b);
    }
    
    public int lcm(int a, int b) {
        int i;
        for(i=1;i<a*b ;i++)
        {
            //System.out.println("i is : "+i);
            if (((i%a)==0)&&((i%b)==0)) break;
        }
        //System.out.println("a is : "+a+" B is : "+b+ "and i is : "+i);
        return i;
    }
  
}
   
    public static void main(String args[]) throws IOException{

       Reader r=new Reader();
       PrintWriter pr=new PrintWriter(System.out,false);

       int num=r.nextInt();
       
       if(num%4==0) System.out.println(num/2+ " "+num/2);
       else if(num%4!=0 && num%2==0) System.out.println(((num/2)-1)+ " "+((num/2)+1));
       else if(num<18) System.out.println((num-9)+" 9");
       else System.out.println("9 "+(num-9));

       pr.flush();
       pr.close();
       
    }

 }