A string s of length n can be encrypted by the following algorithm:

  * iterate over all divisors of n in decreasing order (i.e. from n to 1), 
  * for each divisor d, reverse the substring s[1 ... d] (i.e. the substring which starts at position 1 and ends at position d). 



For example, the above algorithm applied to the string s="codeforces" leads to the following changes: "codeforces" → "secrofedoc" → "orcesfedoc" → "rocesfedoc" → "rocesfedoc" (obviously, the last reverse operation doesn't change the string because d=1).

You are given the encrypted string t. Your task is to decrypt this string, i.e., to find a string s such that the above algorithm results in string t. It can be proven that this string s always exists and is unique.

Input

The first line of input consists of a single integer n (1 ≤ n ≤ 100) — the length of the string t. The second line of input consists of the string t. The length of t is n, and it consists only of lowercase Latin letters.

Output

Print a string s such that the above algorithm results in t.

Examples

Input

10
rocesfedoc


Output

codeforces


Input

16
plmaetwoxesisiht


Output

thisisexampletwo


Input

1
z


Output

z

Note

The first example is described in the problem statement.
import java.util.*;
import java.io.*;
public class Reverse
{
    static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
    static StringTokenizer st=null;
    static String next()
    {
        while(st==null || !st.hasMoreElements())
        {
            try{
                st=new StringTokenizer(br.readLine());
            } catch (IOException e){
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }
    static int nextInt()
    {
        return Integer.parseInt(next());
    }
    static long nextLong()
    {
        return Long.parseLong(next());
    }
    
    static double nextDouble(){
        return Double.parseDouble(next());
    } 
   public static void main(String[] args) {
        try{
               int n=nextInt();
               String s=next();
               TreeSet<Integer> ts=new TreeSet<>();
               for(int i=2;i<=n;i++)
               {
                   if((n%i)==0)
                   {
                       ts.add(i);
                   }
               }
               String st="";
               while(!ts.isEmpty())
               {
                   int x=ts.first();
                   ts.remove(x);
                   String temp=s.substring(0,x);
                  // bw.write("x="+x+" temp="+temp+"\n");
                   int j=temp.length()-1;
                   st="";
                   while(j>=0)
                   {
                       st+=temp.charAt(j);
                       j--;
                   }
                   String temp2=s.substring(x);
                   s="";
                   s=st+temp2;
               }
               bw.write(s+"\n");
                 bw.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}  