Problem: Whist is a game played by four players with a standard deck of playing cards. The players seat around a table, namely, in north, east, south, and west. This game is played in a team-play basis: the players seating opposite to each other become a team. In other words, they make two teams we could call the north-south team and the east-west team.

Remember that the standard deck consists of 52 cards each of which has a rank and a suit. The rank indicates the strength of the card and is one of the following: 2, 3, 4, 5, 6, 7, 8, 9, 10, jack, queen, king, and ace (from the lowest to the highest). The suit refers to the type of symbols printed on the card, namely, spades, hearts, diamonds, and clubs. The deck contains exactly one card for every possible pair of a rank and a suit, thus 52 cards.

One of the four players (called a dealer) shuffles the deck and deals out all the cards face down, one by one, clockwise from the player left to him or her. Each player should have thirteen cards. Then the last dealt card, which belongs to the dealer, is turned face up. The suit of this card is called trumps and has a special meaning as mentioned below.

A deal of this game consists of thirteen tricks. The objective for each team is winning more tricks than another team. The player left to the dealer leads the first trick by playing one of the cards in his or her hand. Then the other players make their plays in the clockwise order. They have to play a card of the suit led if they have one; they can play any card otherwise. The trick is won by the player with the highest card of the suit led if no one plays a trump, or with the highest trump otherwise. The winner of this trick leads the next trick, and the remaining part of the deal is played similarly. After the thirteen tricks have been played, the team winning more tricks gains a score, one point per trick in excess of six.

Your task is to write a program that determines the winning team and their score for given plays of a deal.



Input

The input is a sequence of datasets. Each dataset corresponds to a single deal and has the following format:

Trump
CardN,1 CardN,2 ... CardN,13
CardE,1 CardE,2 ... CardE,13
CardS,1 CardS,2 ... CardS,13
CardW,1 CardW,2 ... CardW,13


Trump indicates the trump suit. CardN,i, CardE,i, CardS,i, and CardW,i denote the card played in the i-th trick by the north, east, south, and west players respectively. Each card is represented by two characters; the first and second character indicates the rank and the suit respectively.

The rank is represented by one of the following characters: ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘T’ (10), ‘J’ (jack), ‘Q’ (queen), ‘K’ (king), and ‘A’ (ace). The suit is represented by one of the following characters: ‘S’ (spades), ‘H’ (hearts), ‘D’ (diamonds), and ‘C’ (clubs).

You should assume the cards have been dealt out by the west player. Thus the first trick is led by the north player. Also, the input does not contain any illegal plays.

The input is terminated by a line with “#”. This is not part of any dataset and thus should not be processed.

Output

For each dataset, print the winner and their score of the deal in a line, with a single space between them as a separator. The winner should be either “NS” (the north-south team) or “EW” (the east-west team). No extra character or whitespace should appear in the output.

Examples

Input

H
4C 8H QS 5D JD KS 8S AH 6H 7H 3S 7S 6D
TC JC JS KD AC QC QD 2H QH 3H 3C 7C 4D
6C 9C AS TD 5H 6S 5S KH TH AD 9S 8D 2D
8C 5C 2S 7D KC 4S TS JH 4H 9H 2C 9D 3D
D
8D 9D 9S QS 4H 5H JD JS 9H 6S TH 6H QH
QD 9C 5S 7S 7H AC 2D KD 6C 3D 8C TC 7C
5D QC 3S 4S 3H 3C 6D KS JC AS 5C 8H TS
4D 4C 8S 2S 2H KC TD JH 2C AH 7D AD KH
#


Output

EW 1
EW 2


Input

H
4C 8H QS 5D JD KS 8S AH 6H 7H 3S 7S 6D
TC JC JS KD AC QC QD 2H QH 3H 3C 7C 4D
6C 9C AS TD 5H 6S 5S KH TH AD 9S 8D 2D
8C 5C 2S 7D KC 4S TS JH 4H 9H 2C 9D 3D
D
8D 9D 9S QS 4H 5H JD JS 9H 6S TH 6H QH
QD 9C 5S 7S 7H AC 2D KD 6C 3D 8C TC 7C
5D QC 3S 4S 3H 3C 6D KS JC AS 5C 8H TS
4D 4C 8S 2S 2H KC TD JH 2C AH 7D AD KH


Output

EW 1
EW 2

Solution (in JAVA):

Solution:
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.NoSuchElementException;
import java.util.*;
public class Main {
	String s;
	String rank= "23456789TJQKA";
	
	public int compare(String a,String b,String s,String l){
		
		int ai = a.indexOf(s);
		int bi = b.indexOf(s);
		
		if((ai == -1 && bi == -1) || (ai != -1 && bi != -1)){
			if(ai == -1 && bi == -1){
				int aj = a.indexOf(l);
				int bj = b.indexOf(l);
				if((aj == -1 && bj == -1) || (aj != -1 && bj != -1)){
					return rank.indexOf(a.substring(0,1)) - rank.indexOf(b.substring(0,1));
				}else if(aj != -1 && bj == -1){
					return 1;
				}else if(aj == -1 && bj != -1){
					return -1;
				}else{
					return 0;
				}
			}
			return rank.indexOf(a.substring(0,1)) - rank.indexOf(b.substring(0,1));
		}else if(ai != -1 && bi == -1){
			return 1;
		}else if(ai == -1 && bi != -1){
			return -1;
		}else{
			return 0;
		}
	}
	public void solve(){
		while(true){
			s = next();
			if(s.equals("#"))break;
			
			int ns = 0;
			int ew = 0;
			String[][] cards = new String[4][13];
			for(int i = 0;i < 4;i++){
				for(int j = 0;j < 13;j++){
					cards[i][j] = next();
				}
			}
			int lead = 0;
			for(int i = 0;i < 13;i++){
				int max = 0;
				for(int j = 0;j < 4;j++){
					int res = compare(cards[max][i],cards[j][i],s,cards[lead][i].substring(1,2));
					if(res < 0){
						max = j;
					}
				}
				if(max == 0 || max == 2){
					ns++;
				}else{
					ew++;
				}
				lead = max;
			}
			if(ns < ew){
				out.println("EW " + (ew - 6));
			}else{
				out.println("NS " + (ns - 6));
			}
		}
	}
 
	public static void main(String[] args) {
		out.flush();
		new Main().solve();
		out.close();
	}
 
	/* Input */
	private static final InputStream in = System.in;
	private static final PrintWriter out = new PrintWriter(System.out);
	private final byte[] buffer = new byte[2048];
	private int p = 0;
	private int buflen = 0;
 
	private boolean hasNextByte() {
		if (p < buflen)
			return true;
		p = 0;
		try {
			buflen = in.read(buffer);
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (buflen <= 0)
			return false;
		return true;
	}
 
	public boolean hasNext() {
		while (hasNextByte() && !isPrint(buffer[p])) {
			p++;
		}
		return hasNextByte();
	}
 
	private boolean isPrint(int ch) {
		if (ch >= '!' && ch <= '~')
			return true;
		return false;
	}
 
	private int nextByte() {
		if (!hasNextByte())
			return -1;
		return buffer[p++];
	}
 
	public String next() {
		if (!hasNext())
			throw new NoSuchElementException();
		StringBuilder sb = new StringBuilder();
		int b = -1;
		while (isPrint((b = nextByte()))) {
			sb.appendCodePoint(b);
		}
		return sb.toString();
	}
 
	public int nextInt() {
		return Integer.parseInt(next());
	}
 
	public long nextLong() {
		return Long.parseLong(next());
	}
 
	public double nextDouble() {
		return Double.parseDouble(next());
	}
}