#include <stdio.h> 
#include <stdlib.h>
#include <algorithm>
#include <set>
#include <vector>
#include <iostream>
#include <assert.h>
using namespace std;
int n, m, golygons;
set< pair<int, int> > ban;
const int dx[] = {0, 0, 1, -1};
const int dy[] = {1, -1, 0, 0};
const char sdir[] = "nsew";
char path[1024];
char g[2048][2048] = {}, g2[2048][2048];
vector<string> ways;
#define BASE 1024
void dfs(int x, int y, int dir, int step) {
    if (abs(x - 0) + abs(y - 0) > (step + n) * (n - step + 1)/2) {
        return;
    }
    if (step == n + 1) {
        if (x == 0 && y == 0) {
            path[step - 1] = '\0';
            ways.push_back(path);
            golygons++;
        }
        return ;
    }
    if (dir != 0) {
        for (int i = 0; i < 2; i++) {
            int tx = x, ty = y, ok = 1;
            for (int j = 0; j < step; j++) {
                tx = tx + dx[i], ty = ty + dy[i];
                assert(BASE + tx >= 0 && BASE + ty >= 0);
                assert(BASE + tx < 2048 && BASE + ty < 2048);
                if (g[BASE + tx][BASE + ty]) {
                    ok = 0;
                    break;
                }
            }
            if (ok && g2[BASE + tx][BASE + ty] == 0) {
                g2[BASE + tx][BASE + ty] = 1;
                path[step - 1] = sdir[i];
                dfs(tx, ty, 0, step + 1);
                g2[BASE + tx][BASE + ty] = 0;
            }
        }
    }
    if (dir != 1) {
        for (int i = 2; i < 4; i++) {
            int tx = x, ty = y, ok = 1;
            for (int j = 0; j < step; j++) {
                tx = tx + dx[i], ty = ty + dy[i];
                assert(BASE + tx >= 0 && BASE + ty >= 0);
                assert(BASE + tx < 2048 && BASE + ty < 2048);
                if (g[BASE + tx][BASE + ty]) {
                    ok = 0;
                    break;
                }
            }
            if (ok && g2[BASE + tx][BASE + ty] == 0) {
                g2[BASE + tx][BASE + ty] = 1;
                path[step - 1] = sdir[i];
                dfs(tx, ty, 1, step + 1);
                g2[BASE + tx][BASE + ty] = 0;
            }
        }
    }
}
int main() {
    int testcase, x[64], y[64];
    scanf("%d", &testcase);
    while (testcase--) {
        scanf("%d %d", &n, &m);
        ban.clear();
        for (int i = 0; i < m; i++) {
            scanf("%d %d", &x[i], &y[i]);
            ban.insert(make_pair(x[i], y[i]));
            g[BASE + x[i]][BASE + y[i]] = 1;
        }
        ways.clear();
        dfs(0, 0, -1, 1);
        sort(ways.begin(), ways.end());
        for (int i = 0; i < ways.size(); i++)
            puts(ways[i].c_str());
        printf("Found %d golygon(s).\n\n", ways.size());
        for (int i = 0; i < m; i++)
            g[BASE + x[i]][BASE + y[i]] = 0;
    }
    return 0;
}