using System; using System.Collections.Generic; using System.Text; using System.Linq; class Program { public void Proc() { Reader.IsDebug = false; string org = "inabameguru"; char[] boin = org.Where(a=> a=='a' || a=='i' || a=='u' || a=='e' || a=='o').ToArray(); char[] shiin = org.Where(a=> a!='a' && a!='i' && a!='u' && a!='e' && a!='o').ToArray(); List ret = this.GetKumiawase(boin, shiin, 0, false); Dictionary nameDic = new Dictionary(); ret.ForEach(a=>nameDic[a] = true); // Console.WriteLine(nameDic.Count); int queryCount = int.Parse(Reader.ReadLine()); for(int i=0; ia.Value == true) == 0) { Console.WriteLine("NO"); } else { Console.WriteLine(nameDic.First(a=>a.Value).Key); } } private Dictionary>> dic = new Dictionary>>(); private List GetKumiawase(char[] boin, char[] siin, int target,bool prevSiin) { if(!dic.ContainsKey(target)) { dic.Add(target, new Dictionary>()); } if(dic[target].ContainsKey(prevSiin)) { return dic[target][prevSiin]; } int boinCount = 0; for(int i=0; i ans = new List(); if(boinCount == 1 && siinCount == 0) { for(int i=0; i siinCount) { for(int i=0; i ret = this.GetKumiawase(boin, siin, target + (1< 0) { ret.ForEach(a=>ans.Add(boin[i].ToString() + a)); } } } } if(!prevSiin) { for(int i=0; i ret = this.GetKumiawase(boin, siin, target + (1<<(i+boin.Length)), true); if(ret != null && ret.Count > 0) { ret.ForEach(a=>ans.Add(siin[i].ToString() + a)); } } } } } this.dic[target].Add(prevSiin, ans); return ans; } public class Reader { public static bool IsDebug = true; private static String PlainInput = @" 3 inabameguru meguruinaba nemuriugaba "; private static System.IO.StringReader Sr = null; public static string ReadLine() { if (IsDebug) { if (Sr == null) { Sr = new System.IO.StringReader(PlainInput.Trim()); } return Sr.ReadLine(); } else { return Console.ReadLine(); } } } static void Main() { Program prg = new Program(); prg.Proc(); } }