John Doe has found the beautiful permutation formula.

Let's take permutation p = p1, p2, ..., pn. Let's define transformation f of this permutation: 

<image>

where k (k > 1) is an integer, the transformation parameter, r is such maximum integer that rk ≤ n. If rk = n, then elements prk + 1, prk + 2 and so on are omitted. In other words, the described transformation of permutation p cyclically shifts to the left each consecutive block of length k and the last block with the length equal to the remainder after dividing n by k. 

John Doe thinks that permutation f(f( ... f(p = [1, 2, ..., n], 2) ... , n - 1), n) is beautiful. Unfortunately, he cannot quickly find the beautiful permutation he's interested in. That's why he asked you to help him.

Your task is to find a beautiful permutation for the given n. For clarifications, see the notes to the third sample.

Input

A single line contains integer n (2 ≤ n ≤ 106).

Output

Print n distinct space-separated integers from 1 to n — a beautiful permutation of size n.

Examples

Input

2


Output

2 1 


Input

3


Output

1 3 2 


Input

4


Output

4 2 3 1 

Note

A note to the third test sample: 

  * f([1, 2, 3, 4], 2) = [2, 1, 4, 3]
  * f([2, 1, 4, 3], 3) = [1, 4, 2, 3]
  * f([1, 4, 2, 3], 4) = [4, 2, 3, 1]
import java.util.*;
import java.io.*;
import java.math.*;
import java.awt.geom.*;

import static java.lang.Math.*;

public class Solution implements Runnable {

    void naiveF(int[] p, int k) {
        for (int start = 0; start < p.length; start += k) {
            int sval = p[start];
            for (int i = start; i + 1 < min(start + k, p.length); i++) {
                p[i] = p[i + 1];
            }
            p[min(start + k, p.length) - 1] = sval;
        }
    }

    int[] solve(int n) {
        int[] column = new int[2 * n];
        for (int i = 0; i < n; i++) {
            column[i] = i + 1;
        }
        for (int i = 2, it = 0; i <= n; i++, it++) {
            int buf = 0;
            for (int j = 0; j < n; j += i) {
                int temp = column[it + j];
                column[it + j] = buf;
                buf = temp;
            }
            column[n + it] = buf;
        }
        int[] ans = new int[n];
        for (int i = 0; i < n; i++) {
            ans[i] = column[n - 1 + i];
        }
        return ans;
    }
    
    public void solve() throws Exception {
        int n = sc.nextInt();
        int[] ans = solve(n);
        for (int i = 0; i < n; i++) {
            out.print(ans[i] + " ");
        }
        out.println();
    }

    static Throwable uncaught;

    BufferedReader in;
    FastScanner sc;
    PrintWriter out;

    @Override
    public void run() {
        try {
            //in = new BufferedReader(new FileReader(".in"));
            //out = new PrintWriter(new FileWriter(".out"));
            in = new BufferedReader(new InputStreamReader(System.in));
            out = new PrintWriter(System.out);
            sc = new FastScanner(in);
            solve();
        } catch (Throwable uncaught) {
            Solution.uncaught = uncaught;
        } finally {
            out.close();
        }
    }

    public static void main(String[] args) throws Throwable {
        new Solution().run();
        //Thread thread = new Thread(null, new Solution(), "", (1 << 26));
        //thread.start();
        //thread.join();
        if (Solution.uncaught != null) {
            throw Solution.uncaught;
        }
    }

}

class FastScanner {

    BufferedReader in;
    StringTokenizer st;

    public FastScanner(BufferedReader in) {
        this.in = in;
    }

    public String nextToken() throws Exception {
        while (st == null || !st.hasMoreTokens()) {
            st = new StringTokenizer(in.readLine());
        }
        return st.nextToken();
    }

    public int nextInt() throws Exception {
        return Integer.parseInt(nextToken());
    }

    public long nextLong() throws Exception {
        return Long.parseLong(nextToken());
    }

    public double nextDouble() throws Exception {
        return Double.parseDouble(nextToken());
    }

}