Little C loves number «3» very much. He loves all things about it.

Now he has a positive integer n. He wants to split n into 3 positive integers a,b,c, such that a+b+c=n and none of the 3 integers is a multiple of 3. Help him to find a solution.

Input

A single line containing one integer n (3 ≤ n ≤ 10^9) — the integer Little C has.

Output

Print 3 positive integers a,b,c in a single line, such that a+b+c=n and none of them is a multiple of 3.

It can be proved that there is at least one solution. If there are multiple solutions, print any of them.

Examples

Input

3


Output

1 1 1

Input

233

Output

77 77 79
import java.io.*;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;

public class Test {

    // Complete the findBestPath function below.
    static List<Integer>[] a, w;
    static int n, mx = 0, time;
    static List<Integer> arr_beauty;
    static List<Integer> list;
    static List<Boolean> list2;
    static int[] used;


    static void dfs(int v, int t, int beauty) {


        used[v]++;

        list.add(v);
        if (v == 0)
        {
            mx = Math.max(mx, beauty);
            System.out.println(beauty + ": ");
            for (int k = 0; k < list.size(); k++)
                System.out.print(arr_beauty.get(list.get(k)) + ":" + list2.get(k) + " ");
            System.out.println();
        }
        for (int i = 0; i < a[v].size(); ++i) {
            int to = a[v].get(i);
            System.out.println(v + " " + to + " " + used[to]);
            if (t + w[v].get(i) <= time && used[to] == 0) {
                list2.add(false);
                dfs(a[v].get(i), t + w[v].get(i), beauty + arr_beauty.get(to));
            }
            else
            if (t + w[v].get(i) <= time && used[to] > 0) {
                list2.add(true);
                dfs(a[v].get(i), t + w[v].get(i), beauty);
            }

        }
        used[v]--;
        list.remove(list.size()-1);
        list2.remove(list2.size()-1);

    }
    static int findBestPath(int len, int m, int max_t, List<Integer> beauty, List<Integer> u, List<Integer> v, List<Integer> t) {
        n = len;
        arr_beauty = beauty;
        used = new int[n];
        list = new ArrayList<>();
        list2 = new ArrayList<>();
        time = max_t;
        a = new ArrayList[n];
        w = new ArrayList[n];
        for (int i = 0; i < n; i++) {
            a[i] = new ArrayList<>();
            w[i] = new ArrayList<>();
            used[i] = 0;
        }
        for (int i = 0; i < u.size(); i++) {
            a[u.get(i)].add(v.get(i));
            w[u.get(i)].add(t.get(i));
            a[v.get(i)].add(u.get(i));
            w[v.get(i)].add(t.get(i));
        }
        list2.add(true);

        dfs(0, 0, arr_beauty.get(0));
        return mx;

    }


    public static void main(String[] args) {


        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        if (n % 3 == 0) {
            System.out.print(1 + " " + 1 + " " + (n-2));
        }
        else
        if (n%3 == 1) {
            System.out.print(1 + " " + (1) + " " + (n-2));
        }
        else {
            System.out.print(1 + " " + 2 + " " + (n-3));
        }

    }

}
