// 2011/07/18 Tazoe

#include <iostream>
#include <string>
using namespace std;

bool DFS(int G[26][26], int n, int cnt, int ini)
{
	if(cnt==n)
		return true;

	for(int j=0; j<26; j++)
		if(G[ini][j]!=0){
			G[ini][j]--;
			if(DFS(G, n, cnt+1, j))
				return true;
			G[ini][j]++;
		}

	return false;
}

int main()
{
	while(true){
		int n;
		cin >> n;
		if(n==0)
			break;

		int G[26][26];
		for(int i=0; i<26; i++)
			for(int j=0; j<26; j++)
				G[i][j] = 0;

		for(int i=0; i<n; i++){
			string str;
			cin >> str;
			G[str[0]-'a'][str[str.size()-1]-'a']++;
		}

		bool flg = true;
		for(int i=0; i<26; i++){
			int bgn = 0;
			int end = 0;
			for(int j=0; j<26; j++){
				bgn += G[i][j];
				end += G[j][i];
			}
			if(bgn!=end){
				flg = false;
				break;
			}
		}
		if(!flg){
			cout << "NG" << endl;
			continue;
		}

		int ini = 0;
		flg = false;
		for(; ini<26; ini++){
			for(int j=0; j<26; j++){
				if(G[ini][j]!=0){
					flg = true;
					break;
				}
			}
			if(flg)
				break;
		}

		if(DFS(G, n, 0, ini))
			cout << "OK" << endl;
		else
			cout << "NG" << endl;
	}

	return 0;
}