Eleven wants to choose a new name for herself. As a bunch of geeks, her friends suggested an algorithm to choose a name for her. Eleven wants her name to have exactly n characters. 

<image>

Her friend suggested that her name should only consist of uppercase and lowercase letters 'O'. More precisely, they suggested that the i-th letter of her name should be 'O' (uppercase) if i is a member of Fibonacci sequence, and 'o' (lowercase) otherwise. The letters in the name are numbered from 1 to n. Fibonacci sequence is the sequence f where

  * f1 = 1, 
  * f2 = 1, 
  * fn = fn - 2 + fn - 1 (n > 2). 



As her friends are too young to know what Fibonacci sequence is, they asked you to help Eleven determine her new name.

Input

The first and only line of input contains an integer n (1 ≤ n ≤ 1000).

Output

Print Eleven's new name on the first and only line of output.

Examples

Input

8


Output

OOOoOooO


Input

15


Output

OOOoOooOooooOoo


import java.util.*;
import java.io.*;
public class Main {
	
	static InputReader in=new InputReader(System.in);
	static PrintWriter out=new PrintWriter(System.out);
	static int N,M;
	static boolean visited[][];
	static char ans[][]; 
	public static void main(String args[])
	{
		int T=1,i,j,k;
		//T=in.readInt();
		while(T-->0)
		{
 			N=in.readInt();
 			int a=1,b=2,c=3;
 			String ans="OO";
 			if(N==1)
 				out.println("O");
 			else if(N==2)
 				out.println("OO");
 			else{
 	 			for(i=3;i<=N;i++)
 	 			{
 	 				if(i==c)
 	 				{
 	 					ans=ans+"O";
 	 					a=b;
 	 					b=c;
 	 					c=a+b;
 	 				}
 	 				else
 	 				{
 	 					ans=ans+"o";
 	 				}
 	 			}
 	 			out.println(ans);
 			}	
		}
		out.flush();
		out.close();
	}
	public static void calc(int A[][],int val,int i,int j)
	{
//		out.println(i+" "+j);
		visited[i][j]=true;
		if(A[i][j]==-1||ans[i][j]=='Y')
			return ;
		else if(A[i][j]==0)
		{
			val++;
			if((i-1)>=0&&!visited[i-1][j])
				calc(A,val,i-1,j);
			if((j-1)>=0&&!visited[i][j-1])
				calc(A,val,i,j-1);
			if((j+1)<M&&!visited[i][j+1])
				calc(A,val,i,j+1);
			if((i+1)<N&&!visited[i+1][j])
				calc(A,val,i+1,j);
		}
		else
		{
			if(val<=A[i][j])
			{
				ans[i][j]='Y';
				return;
			}
		}
	}
}
class Point implements Comparable{
	int x,y,val;
	Point(int x,int y,int val)
	{
		this.x=x;
		this.y=y;
		this.val=val;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return super.toString();
	}
	@Override
	public int compareTo(Object arg0) {
		// TODO Auto-generated method stub
		Point p=(Point)arg0;
		return this.val-p.val;
	}
}
class InputReader{
	private InputStream stream;
	private byte[] buf = new byte[1024];
	private int curChar;
	private int numChars;
	private SpaceCharFilter filter;
	
	public InputReader(InputStream stream){this.stream = stream;}
	public int read(){
		if (numChars==-1) throw new InputMismatchException();
		if (curChar >= numChars){
			curChar = 0;
			try {numChars = stream.read(buf);}
			catch (IOException e){throw new InputMismatchException();}
			if(numChars <= 0) return -1;
		}
		return buf[curChar++];
	}

	public int readInt(){
		int c = read();
		while(isSpaceChar(c)) c = read();
		int sgn = 1;
		if (c == '-') {sgn = -1;c = read();}
		int res = 0;
		do {
			if(c<'0'||c>'9') throw new InputMismatchException();
			res *= 10;
			res += c - '0';
			c = read();
		}
		while (!isSpaceChar(c)); return res * sgn;
	}
	public void inputI0(int a[],int n)
	{
		for(int i=0;i<n;i++)
			a[i]=readInt();
	}
	public void inputI1(int a[],int n)
	{
		for(int i=1;i<=n;i++)
			a[i]=readInt();
	}
	public long readLong() {
		int c = read();
		while (isSpaceChar(c))
			c = read();
		int sgn = 1;
		if (c == '-') {
			sgn = -1;
			c = read();
      }
		long res = 0;
		do {
			if (c < '0' || c > '9')
				throw new InputMismatchException();
			res *= 10;
			res += c - '0';
			c = read();
      }
		while (!isSpaceChar(c));
          return res * sgn;
  }
	public void inputL0(long a[],int n)
	{
		for(int i=0;i<n;i++)
			a[i]=readLong();
	}
	public void inputL1(long a[],int n)
	{
		for(int i=1;i<=n;i++)
			a[i]=readLong();
	}
	public double readDouble() {
      int c = read();
      while (isSpaceChar(c))
          c = read();
      int sgn = 1;
		if (c == '-') {
			sgn = -1;
			c = read();
      }
		double res = 0;
		while (!isSpaceChar(c) && c != '.') {
			if (c == 'e' || c == 'E')
				return res * Math.pow(10, readInt());
			if (c < '0' || c > '9')
				throw new InputMismatchException();
			res *= 10;
			res += c - '0';
			c = read();
      }
		if (c == '.') {
			c = read();
			double m = 1;
			while (!isSpaceChar(c)) {
				if (c == 'e' || c == 'E')
					return res * Math.pow(10, readInt());
				if (c < '0' || c > '9')
					throw new InputMismatchException();
				m /= 10;
				res += (c - '0') * m;
				c = read();
          }
      }
		return res * sgn;
  }
	
	public String readString() {
		int c = read();
		while (isSpaceChar(c))
			c = read();
		StringBuilder res = new StringBuilder();
		do {
			res.appendCodePoint(c);
			c = read();
		} while (!isSpaceChar(c));
		return res.toString();
	}

	public boolean isSpaceChar(int c) {
		if (filter != null)
			return filter.isSpaceChar(c);
		return c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == -1;
		}

	public String next() {
		return readString();
	}
	
	public interface SpaceCharFilter {
		public boolean isSpaceChar(int ch);
	}
}

