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: Wrong Answer)

class DisjointSet
  attr_accessor :parent, :rank

  def initialize
    @parent = {}
    @rank = {}
  end

  def make(node)
    @parent[node] = node
    @rank[node] = 0
  end

  def union(node1, node2)
    link(find(node1), find(node2))
  end

  def link(node1, node2)
    node1, node2 = node2, node1 if @rank[node1] < @rank[node2]
    @parent[node2] = node1
    @rank[node1] += 1 if @rank[node1] == @rank[node2]
  end

  def find(node)
    (@parent[node] == node) ? node : (@parent[node] = find(@parent[node]))
  end
end

while true do
  n = gets.to_i
  break if n == 0
  set = DisjointSet.new
  word = []
  count = Hash.new(0)
  n.times do
    word.push(gets.chomp)
    from = word.last.chr
    to = word.last.reverse.chr
    count[from] += 1
    count[to] -= 1
    set.make(from) unless set.parent.key?(from)
    set.make(to) unless set.parent.key?(to)
    set.union(from, to)
  end
  ok = true
  count.each do |key, val|
    ok = false if val != 0
  end
  use = Hash.new
  set.parent.each do |key, val|
    use[set.find(key)] = true
  end
  ok = false if use.size != 1
  puts ok ? "OK" : "NG"
end