Problem:
Score : 1600 points

Problem Statement

For a string S, let f(S) be the lexicographically smallest cyclic shift of S.
For example, if S = babca, f(S) = ababc because this is the smallest among all cyclic shifts (babca, abcab, bcaba, cabab, ababc).

You are given three integers X, Y, and Z.
You want to construct a string T that consists of exactly X as, exactly Y bs, and exactly Z cs.
If there are multiple such strings, you want to choose one that maximizes f(T) lexicographically.

Compute the lexicographically largest possible value of f(T).

Constraints

1 \leq X + Y + Z \leq 50

X, Y, Z are non-negative integers.

Input

Input is given from Standard Input in the following format:

X Y Z

Output

Print the answer.

Sample Input 1

2 2 0

Sample Output 1

abab

T must consist of two as and two bs.

If T = aabb, f(T) = aabb.

If T = abab, f(T) = abab.

If T = abba, f(T) = aabb.

If T = baab, f(T) = aabb.

If T = baba, f(T) = abab.

If T = bbaa, f(T) = aabb.

Thus, the largest possible f(T) is abab.

Sample Input 2

1 1 1

Sample Output 2

acb

Solution in Ruby (2.3.3) (judge verdict: Wrong Answer)

ary = gets.chomp.split(" ").map(&:to_i)
a = ary[0]
b = ary[1]
c = ary[2]

if a > 0
  list = []
  bb = b/a
  ba = b%a
  cc = c/a
  ca = c%a

  a.times do |i|
    list.push("c"*cc+"b"*bb)
  end
  ba.times do |i|
    list[i] = list[i]+"b"
  end
  if ca > 0
    [ca,a-ba].min.times do |i|
      list[ba+i] = "c"+list[ba+i]
    end
    if ca > (a-ba)
      (ca -(a-ba)).times do |i|
        list[i] = "c"+list[i]
      end
    end
  end

  str = "a"+list.join("a")
elsif b>0
  cc = c/b
  cb = c%b
  list = []
  b.times do |i|
    list.push("c"*cc)
  end
  cb.times do |i|
    list[i] = list[i]+"c"
  end

  str = "b"+list.join("b")

else
  str = "c"*c
end

puts str