using System; using System.Collections; namespace No_332 { class MainClass { private struct Progression { public long value; public int number; } private static int n; private static long x; private static Progression[] S; private static ArrayList result = new ArrayList(); public static void Main (string[] args) { bool success; ArrayList sumPos = new ArrayList(); string[] data = Console.ReadLine().Split(' '); int.TryParse(data[0], out n); long.TryParse(data[1], out x); data = Console.ReadLine().Split(' '); S = new Progression[data.Length]; for (int i = 0; i < data.Length; i++) { long.TryParse(data[i], out S[i].value); S[i].number = i; } long[] value = new long[S.Length]; for (int i = 0; i < value.Length; i++) value[i] = S[i].value; Array.Sort(value, S); success = false; for (int i = 0; i < S.Length; i++) { if (TotalCheck(i, 0, sumPos)) { string[] output = new string[n]; for (int j = 0; j < output.Length; j++) output[j] = "x"; for (int j = 0; j < result.Count; j++) output[(int)result[j]] = "o"; for (int j = 0; j < output.Length; j++) Console.Write(output[j]); Console.WriteLine(); success = true; break; } } if (!success) Console.WriteLine("NG"); } private static bool TotalCheck(int pos, long sum, ArrayList sumPos) { sum += S[pos].value; if (sum == x) { sumPos.Add(S[pos].number); result = new ArrayList(sumPos); return true; } if (sum > x) return false; if (sum < x) { for (int i = pos + 1; i < S.Length; i++) { sumPos.Add(S[pos].number); if (TotalCheck(i, sum, sumPos)) return true; sumPos.RemoveAt(sumPos.Count - 1); } } return false; } } }