In the beginning of the new year Keivan decided to reverse his name. He doesn't like palindromes, so he changed Naviek to Navick.

He is too selfish, so for a given n he wants to obtain a string of n characters, each of which is either 'a', 'b' or 'c', with no palindromes of length 3 appearing in the string as a substring. For example, the strings "abc" and "abca" suit him, while the string "aba" doesn't. He also want the number of letters 'c' in his string to be as little as possible.

Input

The first line contains single integer n (1 ≤ n ≤ 2·105) — the length of the string.

Output

Print the string that satisfies all the constraints.

If there are multiple answers, print any of them.

Examples

Input

2


Output

aa


Input

3


Output

bba

Note

A palindrome is a sequence of characters which reads the same backward and forward.
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

public class Paindrom3 {

  private static final String REGEX = " ";
  private static final Boolean DEBUG = false;
  private static final String FILE_NAME = "input.txt";




  public static void main(String[] args) throws IOException {
    Solver solver = new Solver();
    solver.readData();
    solver.solveAndPrint();
  }

  private static class Solver {

    long n;

    void readData() throws IOException {
      InputStream in = DEBUG ? new FileInputStream(FILE_NAME) : System.in;
      Scanner scanner = new Scanner(in);
      n = scanner.nextInt();
    }

    void solveAndPrint() {
      StringBuilder builder = new StringBuilder();
      for (long i = 0; i < n; i++) {
        long ost = i % 4;
        if (ost == 0 || ost ==1){
          builder.append('a');
        } else {
          builder.append('b');
        }
      }
      System.out.println(builder);
    }


    
    
    
    
    
    
    
    

    @SuppressWarnings("SameParameterValue")
    int[] splitInteger(String string, int n) {
      final String[] split = string.split(REGEX, n);
      int[] result = new int[split.length];
      for (int i = 0; i < n; ++i) {
        result[i] = Integer.parseInt(split[i]);
      }
      return result;
    }
    public int[] splitInteger(String string) {
      return splitInteger(string, 0);
    }


    @SuppressWarnings("SameParameterValue")
    long[] splitLong(String string, int n) {
      final String[] split = string.split(REGEX, n);
      long[] result = new long[split.length];
      for (int i = 0; i < n; ++i) {
        result[i] = Long.parseLong(split[i]);
      }
      return result;
    }

    public long[] splitLong(String string) {
      return splitLong(string, 0);
    }
    @SuppressWarnings("SameParameterValue")
    double[] splitDouble(String string, int n) {
      final String[] split = string.split(REGEX, n);
      double[] result = new double[split.length];
      for (int i = 0; i < n; ++i) {
        result[i] = Double.parseDouble(split[i]);
      }
      return result;
    }

    public double[] splitDouble(String string) {
      return splitDouble(string, 0);
    }

    @SuppressWarnings("SameParameterValue")
    String[] splitString(String string, int n) {
      return string.split(REGEX, n);
    }

    public String[] splitString(String string) {
      return splitString(string, 0);
    }

    public int max(int a, int b){
      return Math.max(a, b);
    }

    public long max(long a, long b){
      return Math.max(a, b);
    }

    public int min(int a, int b){
      return Math.min(a, b);
    }

    public long min(long a, long b){
      return Math.min(a, b);
    }

    public double max(double a, double b){
      return Math.max(a, b);
    }

    public double min(double a, double b){
      return Math.min(a, b);
    }

  }



}
