import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.*;
public class uva {
    public static void main(String[] args)throws IOException{
        Scanner sc=new Scanner(System.in);
        int x=sc.nextInt();
        BigInteger b[]=new BigInteger[x+2];
        b[1]=new BigInteger("1");
        b[2]=b[1];
        for(int i=3;i<=x;i++){
            b[i]=b[i-1];
            b[i]=b[i].add(b[i-2]);
        }
        HashSet hs=new HashSet();
        hs.add("2");
        for(int i=1;i<=x;i++){
            hs.add(b[i].toString());
        }
        for(int i=1;i<=x;i++){
            if(hs.contains(Integer.toString(i)))
                System.out.print('O');
            else
                System.out.print('o');
        }
    }
    static class Scanner
    {
        StringTokenizer st;
        BufferedReader br;

        public Scanner(InputStream s){	br = new BufferedReader(new InputStreamReader(s));}

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

        public int nextInt() throws IOException {return Integer.parseInt(next());}

        public long nextLong() throws IOException {return Long.parseLong(next());}

        public String nextLine() throws IOException {return br.readLine();}

        public double nextDouble() throws IOException { return Double.parseDouble(next()); }

        public boolean ready() throws IOException {return br.ready();}
    }
}