Problem:
こぶたぬきつねこ

A子さんの家に親戚のB男君がやってきました。彼は3歳で歌が大好きです。彼は幼稚園でならった「こぶたぬきつねこ」(山本直純作詞・作曲)という歌を一生懸命に歌っています。この歌では、4つのことば「こぶた」 「たぬき」 「きつね」「ねこ」が順にしりとりになっていて、さらに最後の音と最初の音が同じになっています。B男君は、A子さんに、同じようなしりとりが、B男君が言った単語から作れるか教えて欲しいと言われました。

そこで、A子さんを助けるために、与えられた単語から、その単語をすべて使って、順にしりとりをつくり、その上で、 第1 の単語の最初の文字と最終の単語の最後の文字が同じであるようにできるか否かを判定するプログラムを作成しましょう。

n 個の単語を入力とし、それらの単語の組からしりとりを作成できるか否かを判定し、可能な場合はOK と、不可能な場合は NG と出力するプログラムを作成してください。

Input

複数のデータセットの並びが入力として与えられます。入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。

n
word1
word2
:
wordn

1 行目に単語の個数 n (2 ≤ n ≤ 10000) が与えられます。続く n 行に n 個の単語 wordi (32 文字以下の半角英小文字だけからなる文字列) が与えられます。

データセットの数は 50 を超えません。

Output

入力データセットごとに、判定結果を１行に出力します。

Sample Input

5
apple
yellow
georgia
king
email
7
apple
yellow
georgia
king
email
wink
lucky
0

Output for the Sample Input

NG
OK

Solution in Ruby (judge verdict: Time Limit Exceeded)

### main

while true
  n = gets.strip.to_i
  break if n == 0

  words = n.times.map{gets.strip}

  heads = {}
  tails = {}
  ('a'..'z').each{|c| heads[c] = []; tails[c] = []}

  words.each_with_index do |w, i|
    heads[w[0]] << i
    tails[w[-1]] << i
  end

  nolink = false
  words.each do |w|
    if heads[w[-1]].empty? || tails[w[0]].empty?
      nolink = true
      break
    end
  end

  if nolink
    puts "NG"
    next
  end

  links = words.map{|w| heads[w[-1]]}
  #p links

  used = words.map{false}
  used[0] = true

  stack = words.map{[0, 0]}
  sp = 0
  complete = false

  while sp >= 0
    #p stack

    id, k = stack[sp]
    link0 = links[id]

    if sp == n - 1
      if link0.include?(0)
        complete = true
        break
      end
      sp -= 1
      next
    end

    while k < link0.length
      break if ! used[link0[k]]
      k += 1
    end

    if k >= link0.length
      used[id] = false
      sp -= 1
      next
    end

    stack[sp][1] = k
    nid = link0[k]
    sp += 1
    stack[sp][0] = nid
    stack[sp][1] = 0
    used[nid] = true
  end

  puts (complete ? "OK" : "NG")
end