编程题
贪吃蛇游戏
## 来源
East Central North America 2001, Practice (ZOJ1056)
## 题目描述
模拟一个简化的贪吃蛇游戏。游戏将在一个50×50的棋盘上演示,并对棋盘中的位置进行编号。棋盘左上角位置被编号为(1,1)。蛇最初是由20个正方形连接而成的。这些正方形是水平连接的或者是垂直连接的。开始时蛇水平地处在位置(25,11)到(25,30)上,蛇的头在(25,30)处。蛇可以向东部(E)、西部(W)、北部(N)或者南部(S)移动,但是自身绝不会向后移动。所以,在最初的位置时,向西(W)移动是不可能的。这样,蛇移动每步后,只改变了两个正方形的位置,即它的头和尾。注意:蛇的头部可以移动到蛇的尾巴空出来的正方形。
给定一系列的移动方向,然后蛇进行移动,直到蛇碰到本身,或者蛇跑到棋盘的边界以外,或者蛇成功地完成了所有移动。在前两种情况下,应该忽略掉碰到本身或者出界后剩余的移动。
## 输入描述
输入文件包含多个测试数据。每个测试数据包括两行。第一行是标明移动的次数,为整数n,n<100。当n=0时,标明输入结束。第二行包含n个字符(E、W、N或者S),字符和字符之间没有空格,字符序列表示移动顺序。
## 输出描述
对于每个测试数据都有一行输出。输出可能是以下三种情况:
The worm ran into itself on move m.
The worm ran off the board on move m.
The worm successfully made all m moves.
这里的m是程序求得的移动步数,并且一次移动为1步。
例如,下面样例输入/输出中第2个测试数据所描述的贪吃蛇游戏过程如下图所示。贪吃蛇的初始状态如图(a)所示,在经过前面8步(SSSWWNEN)移动后,到达图(b)所示的状态,这时第9步向北(N)移动一步将碰到贪吃蛇本身。

## 样例输入
```txt
18
NWWWWWWWWWWSESSSWS
20
SSSWWNENNNNNWWWWSSSS
30
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
0
```
## 样例输出
```txt
The worm successfully made all 18 moves.
The worm ran into itself on move 9.
The worm ran off the board on move 21.
```