import java.io.*;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {


//  private void solve(InputReader in, PrintWriter out) {
//    int n = in.nextInt();
//    StringBuilder s = new StringBuilder();
//    for (int i = 1; i <= n; i++) {
//      s.append(i);
//    }
//    out.print(s.charAt(n - 1));
//  }

 private void solve(InputReader in, PrintWriter out) {
   int n = in.nextInt();
   BigInteger[] arr = new BigInteger[n + 1];
   arr[0] = BigInteger.ZERO;
   arr[1] = BigInteger.ONE;
   for (int i = 2; i < n + 1; i++) {
     arr[i] = arr[i - 2].add(arr[i - 1]);
   }
   StringBuilder s = new StringBuilder();
   for (int i = 1; i <= n; i++) {
     if (Arrays.binarySearch(arr,BigInteger.valueOf(i)) >= 0){
       s.append("O");
     }else {
       s.append("o");
     }
   }
   out.print(s);
 }


  public static void main(String[] args) {
    new Main().run();
  }

  private void run() {

    try (InputReader in = new InputReader(System.in);
         PrintWriter out = new PrintWriter(System.out)) {
      solve(in, out);
    }
  }


  static class InputReader implements AutoCloseable {
    private BufferedReader reader;
    private StringTokenizer tokenizer;

    InputReader(InputStream stream) {
      //reader = new BufferedReader(new FileReader(stream), 32768);
      reader = new BufferedReader(new InputStreamReader(stream), 32768);
      tokenizer = null;
    }

    String next() {
      while (tokenizer == null || !tokenizer.hasMoreTokens()) {
        try {
          tokenizer = new StringTokenizer(reader.readLine());
        } catch (IOException e) {
          throw new RuntimeException(e);
        }
      }
      return tokenizer.nextToken();
    }

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

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

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

    @Override
    public void close() {
    }
  }

}
