QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#875679#9977. Norte da Universidadeucup-team5008TL 3047ms36984kbC++207.1kb2025-01-30 02:09:202025-01-30 02:09:21

Judging History

你现在查看的是最新测评结果

  • [2025-01-30 02:09:21]
  • 评测
  • 测评结果:TL
  • 用时:3047ms
  • 内存:36984kb
  • [2025-01-30 02:09:20]
  • 提交

answer

#include<bits/stdc++.h>

using namespace std;
#define rep2(i, j, k) for(ll i=ll(j);i<ll(k);i++)
#define rep(i, k) rep2(i,0,k)
#define rrep2(i, j, k) for(ll i=ll(j)-1;i>=ll(k);i--)
#define rrep(i, j) rrep2(i,j,0)
#define SZ(a) ll(a.size())
#define eb emplace_back
#define all(a) a.begin(),a.end()
using ll = long long;
using vl = vector<ll>;
using vvl = vector<vl>;
using P = pair<ll, ll>;
using vp = vector<P>;
using vvp = vector<vp>;
const ll inf = LLONG_MAX / 4;

template<class T>
bool chmin(T &a, T b) { return a > b ? a = b, 1 : 0; }

template<class T>
bool chmax(T &a, T b) { return a < b ? a = b, 1 : 0; }

const int mod = 998244353;

struct mint {
    ll x;

    mint(ll x = 0) : x(((x % mod) + mod) % mod) {}

    mint &operator+=(const mint &a) {
        if ((x += a.x) >= mod) x -= mod;
        return *this;
    }

    mint &operator-=(const mint &a) {
        if ((x += mod - a.x) >= mod) x -= mod;
        return *this;
    }

    mint &operator*=(const mint &a) {
        (x *= a.x) %= mod;
        return *this;
    }

    mint operator+(const mint &a) { return mint(*this) += a; }

    mint operator-(const mint &a) { return mint(*this) -= a; }

    mint operator*(const mint &a) { return mint(*this) *= a; }
};

mint lu[1010][1010];
mint ld[1010][1010];
mint ru[1010][1010];
mint rd[1010][1010];

void solve() {
    int n, m;
    cin >> n >> m;
    vector<string> s(n);
    rep(i, n) cin >> s[i];
    mint ans;
    rep(t, 2) {
        vl N(m), S(m, n), W(n), E(n, m);
        vl Nc(m), Sc(m, n), Wc(n), Ec(n, m);
        rep(i, n) rep(j, m) {
                if (s[i][j] == 'N') chmax(N[j], i + 1);
                if (s[i][j] == 'S') chmin(S[j], i);
                if (s[i][j] == 'W') chmax(W[i], j + 1);
                if (s[i][j] == 'E') chmin(E[i], j);
            }
        bool ok = true;
        rep(i, n) {
            while (Wc[i] < m and (s[i][Wc[i]] == 'W' or s[i][Wc[i]] == '?')) ++Wc[i];
            while (Ec[i] and (s[i][Ec[i] - 1] == 'E' or s[i][Ec[i] - 1] == '?')) --Ec[i];
            if (W[i] > Wc[i] or E[i] < Ec[i]) ok = false;
        }
        rep(i, m) {
            while (Nc[i] < n and (s[Nc[i]][i] == 'N' or s[Nc[i]][i] == '?')) ++Nc[i];
            while (Sc[i] and (s[Sc[i] - 1][i] == 'S' or s[Sc[i] - 1][i] == '?')) --Sc[i];
            if (N[i] > Nc[i] or S[i] < Sc[i]) ok = false;
        }
        if (!ok) {
            cout << 0 << '\n';
            return;
        }
//        cout << "t: " << t << endl;
//        rep(i, m) printf("%lld %lld %lld %lld %lld\n", i, N[i], Nc[i], S[i], Sc[i]);
//        rep(i, n) printf("%lld %lld %lld %lld %lld\n", i, W[i], Wc[i], E[i], Ec[i]);
        rep(i, n + 1) rep(j, m + 1) {
                if (!i and !j) {
                    lu[i][j] = 1;
                    continue;
                }
                lu[i][j] = 0;
                if (i and W[i - 1] <= j and j <= Wc[i - 1]) lu[i][j] += lu[i - 1][j];
                if (j and N[j - 1] <= i and i <= Nc[j - 1]) lu[i][j] += lu[i][j - 1];
            }
        rrep(i, n + 1) rep(j, m + 1) {
                if (i == n and !j) {
                    ld[i][j] = 1;
                    continue;
                }
                ld[i][j] = 0;
                if (i < n and W[i] <= j and j <= Wc[i]) ld[i][j] += ld[i + 1][j];
                if (j and Sc[j - 1] <= i and i <= S[j - 1]) ld[i][j] += ld[i][j - 1];
            }
        rep(i, n + 1) rrep(j, m + 1) {
                if (!i and j == m) {
                    ru[i][j] = 1;
                    continue;
                }
                ru[i][j] = 0;
                if (i and Ec[i - 1] <= j and j <= E[i - 1]) ru[i][j] += ru[i - 1][j];
                if (j < m and N[j] <= i and i <= Nc[j]) ru[i][j] += ru[i][j + 1];
            }
        rrep(i, n + 1) rrep(j, m + 1) {
                if (i == n and j == m) {
                    rd[i][j] = 1;
                    continue;
                }
                rd[i][j] = 0;
                if (i < n and Ec[i] <= j and j <= E[i]) rd[i][j] += rd[i + 1][j];
                if (j < m and Sc[j] <= i and i <= S[j]) rd[i][j] += rd[i][j + 1];
            }
        vector<mint> lc(m + 1), rc(m + 1);
        lc[0] = rc[m] = 1;
        rep(j, m + 1) {
            if (j)
                rep(i, n) {
                    if (!(W[i] <= j and j <= Wc[i])) continue;
                    if (!(N[j - 1] <= i and i <= Nc[j - 1])) continue;
                    mint now = lu[i][j - 1];
                    now *= ld[i + 1][j];
                    lc[j] += now;
                }
            if (j < m)
                rep(i, n) {
                    if (!(Ec[i] <= j and j <= E[i])) continue;
                    if (!(N[j] <= i and i <= Nc[j])) continue;
                    mint now = ru[i][j + 1];
                    now *= rd[i + 1][j];
                    rc[j] += now;
                }
//            printf("%lld %lld %lld\n", j, lc[j].x, rc[j].x);
        }
        rep(l, m) {
            mint cur = 1;
            rep2(r, l + 1, m + 1) {
                assert(N[r - 1] <= S[r - 1]);
                if (Nc[r - 1] != S[r - 1]) break;
                assert(Sc[r - 1] == N[r - 1]);
                cur *= S[r - 1] - N[r - 1] + 1;
                ans += cur * lc[l] * rc[r];
            }
        }
//        cout << ans.x << endl;
        rep2(i, 1, n) {
            rep2(j, 1, m) rep2(k, j, m) {
                    if (t and j == k) continue;
                    if (!(N[j - 1] <= i and i <= Nc[j - 1])) continue;
                    if (!(Ec[i - 1] <= j and j <= E[i - 1])) continue;
                    if (!(Sc[k] <= i and i <= S[k])) continue;
                    if (!(W[i] <= k and k <= Wc[i])) continue;
                    mint now = 1;
                    now *= lu[i][j - 1] * ru[i - 1][j];
                    now *= rd[i][k + 1] * ld[i + 1][k];
                    ans += now;
//                    printf("%lld %lld %lld %lld\n", i, j, k, now.x);
                }
            rep2(j, 1, m) rep2(k, j, m) {
                    if (t and j == k) continue;
                    if (!(Sc[j - 1] <= i and i <= S[j - 1])) continue;
                    if (!(Ec[i] <= j and j <= E[i])) continue;
                    if (!(N[k] <= i and i <= Nc[k])) continue;
                    if (!(W[i - 1] <= k and k <= Wc[i - 1])) continue;
                    mint now = 1;
                    now *= ld[i][j - 1] * rd[i + 1][j];
                    now *= ru[i][k + 1] * lu[i - 1][k];
                    ans += now;
//                    printf("%lld %lld %lld %lld\n", i, j, k, now.x);
                }
        }
//        cout << ans.x << endl;
        vector<string> ns(m, string(n, ' '));
        rep(i, n) rep(j, m) {
                char c = s[i][j];
                if (c == 'W' or c == 'N') c = 'W' + 'N' - c;
                if (c == 'S' or c == 'E') c = 'S' + 'E' - c;
                ns[j][i] = c;
            }
        swap(s, ns);
        swap(n, m);
    }
    cout << ans.x << '\n';
}

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int t;
    cin >> t;
    while (t--) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 35664kb

input:

5
11 5
NNNNN
NN???
WW???
WWEEE
WEEEE
WEEEE
WWEEE
WWEE?
SSSSS
?SSS?
??SS?
2 7
??S?N??
??S?N??
3 4
W??E
WEEE
?E??
2 2
??
??
3 3
???
???
???

output:

26
1587
18
56
1112

result:

ok 5 number(s): "26 1587 18 56 1112"

Test #2:

score: 0
Accepted
time: 2ms
memory: 35536kb

input:

100
4 4
??NN
????
????
S?S?
4 4
????
????
??E?
??S?
4 4
????
??NE
?S?E
S?S?
4 4
WN??
W???
?S??
??S?
4 4
?N??
????
?S??
??S?
4 4
????
W???
????
????
4 4
W???
W?N?
??E?
???E
4 4
??N?
????
W?EE
?S??
4 4
??N?
??N?
?S??
S??E
4 4
????
????
???E
?S?E
4 4
W???
W?N?
W?E?
S???
4 4
WN??
????
????
????
4 4
?N??...

output:

3280
4026
468
936
3627
15949
462
1362
858
5930
147
5520
1212
9733
2932
408
144
823
11866
7676
1212
477
458
96
2004
6949
2201
144
4612
15949
62
108
108
340
1212
936
3118
738
1568
954
104
4934
3350
276
1160
2649
974
360
374
1761
756
4369
477
1280
9826
72
980
1740
3280
3843
892
3214
1012
72
5681
1042
3...

result:

ok 100 numbers

Test #3:

score: 0
Accepted
time: 1ms
memory: 35660kb

input:

17
5 5
?????
??N??
?????
?????
NW???
3 5
?????
?????
E????
5 3
S?S
???
???
???
???
4 4
?E??
???S
N???
??W?
1 2
NW
1 2
EN
2 1
E
N
2 1
S
E
1 1
?
1 1
S
1 10
??NSNSNS??
4 4
????
?NE?
?WS?
????
4 4
????
?WN?
?SE?
????
3 3
???
???
???
4 4
?N??
???E
W???
??S?
4 4
??N?
W???
???E
?S??
4 4
W??E
????
WEEE
????

output:

0
196
6
0
0
0
0
0
4
1
49
81
81
1112
3607
3607
525

result:

ok 17 numbers

Test #4:

score: 0
Accepted
time: 0ms
memory: 35664kb

input:

100
4 4
W?NN
??NE
??E?
?S??
4 4
?N?N
WWN?
WS?E
?SSE
4 4
??NN
?WNE
W?EE
??SE
4 4
WNNN
?WN?
W??E
??S?
4 4
WNN?
???E
?SEE
?S??
4 4
??NN
W??E
?S??
??SE
4 4
WNNN
WW?E
WSEE
SSSE
4 4
WN?N
WW?E
?SEE
?SS?
4 4
WN??
?W?E
WS??
S??E
4 4
W??N
??NE
WSEE
??S?
4 4
W??N
??NE
???E
S??E
4 4
?N?N
W?N?
??EE
???E
4 4
?N?N...

output:

144
24
24
84
192
216
3
18
35
24
201
412
384
168
72
66
36
24
716
106
24
198
104
12
4
24
46
240
624
70
36
147
144
48
92
238
294
12
700
96
24
293
750
174
408
120
288
16
312
336
36
846
52
3691
1459
312
54
96
232
448
24
1158
2391
86
40
120
126
36
360
156
28
153
36
154
1212
16
160
96
66
178
93
156
36
192
...

result:

ok 100 numbers

Test #5:

score: 0
Accepted
time: 4ms
memory: 35660kb

input:

100
5 5
?????
?????
?????
??SE?
??S??
5 5
?????
???N?
????E
????E
??S??
5 5
?N??N
?W???
?W???
??S?E
SS???
5 5
W????
???NE
WW???
??SE?
S???E
5 5
???N?
????E
?????
???E?
?SS?E
5 5
??N??
W???E
???E?
WSSE?
S????
5 5
WN??N
???N?
?????
W???E
???S?
5 5
?NN?N
??N??
???EE
?????
S????
5 5
???N?
?????
W????
??...

output:

62196
84123
4080
744
36736
2379
9952
17487
25920
48774
28280
4196
236992
4888
11830
8022
22371
2385
6402
2376
57284
2823
2876
5744
7532
4542
12420
245266
114732
3420
37209
3381
4266
900
372
15336
9186
77644
39084
19770
2994
5724
84114
1154
56746
2406
3250
69785
2592
29811
10786
7200
6687
6984
9246
4...

result:

ok 100 numbers

Test #6:

score: 0
Accepted
time: 2ms
memory: 35656kb

input:

100
5 5
W?N?N
??NN?
?W???
?S?E?
?S???
5 5
?????
?WNN?
WW??E
W?S??
?S?S?
5 5
W??NN
W?N?E
????E
??S?E
S??SE
5 5
?N?N?
??NNE
?W?EE
WSS?E
SSSSE
5 5
WNN?N
???N?
W???E
WS???
??S??
5 5
WN?NN
?W???
WW?E?
??SEE
S?S?E
5 5
W?N?N
W??NE
?W???
W?SEE
SSSS?
5 5
W?NNN
???N?
???E?
?????
?SSSE
5 5
WNNN?
?WNN?
WW?EE
??...

output:

1521
2088
1098
80
3272
234
188
2656
72
2909
13088
6499
192
2840
1268
1392
1644
1116
512
66
2832
1344
1704
5588
448
1890
972
624
360
156
15405
4950
3824
624
120
108
1488
192
80
732
216
444
9987
1188
440
1488
780
92979
1480
5314
684
126
180
684
1032
6832
92
808
1952
276
774
232
152
1392
960
1614
192
4...

result:

ok 100 numbers

Test #7:

score: 0
Accepted
time: 3ms
memory: 35652kb

input:

100
4 4
??NN
????
????
S?S?
4 4
????
????
????
??S?
4 4
????
???E
???E
S?S?
4 4
WN??
W???
????
??S?
4 4
?N??
????
????
??S?
4 4
????
W???
????
????
4 4
W???
W???
????
???E
4 4
??N?
????
W??E
?S??
4 4
??N?
????
????
S??E
4 4
????
????
???E
?S?E
4 4
W???
W???
W???
S???
4 4
WN??
????
????
????
4 4
?N??...

output:

3280
15949
3896
2907
10238
15949
4877
3312
3555
5930
2635
5520
3096
9733
7339
1648
936
2895
11866
7676
2613
5520
3691
1238
4270
6949
2201
4184
4612
15949
512
4594
6114
4184
2613
2879
7282
1589
4116
3641
1212
4934
7646
986
4369
9868
2635
2512
1745
7339
7765
4369
4686
1280
9826
2120
2398
9826
3280
123...

result:

ok 100 numbers

Test #8:

score: 0
Accepted
time: 3ms
memory: 35556kb

input:

100
4 4
W?NN
???E
????
?S??
4 4
?N?N
W???
W??E
?SSE
4 4
??NN
???E
W??E
??SE
4 4
WNNN
????
W??E
??S?
4 4
WNN?
???E
???E
?S??
4 4
??NN
W??E
????
??SE
4 4
WNNN
W??E
W??E
SSSE
4 4
WN?N
W??E
???E
?SS?
4 4
WN??
???E
W???
S??E
4 4
W??N
???E
W??E
??S?
4 4
W??N
???E
???E
S??E
4 4
?N?N
W???
???E
???E
4 4
?N?N...

output:

1256
432
586
572
1118
634
56
348
437
778
624
1802
1398
426
474
1648
730
508
1594
106
572
1028
952
240
284
508
326
1028
1282
484
473
1380
5181
368
252
510
2262
204
3896
2291
672
719
1920
1362
5467
792
3583
1152
1648
818
4116
2656
832
3691
2713
1564
1367
1116
1250
1170
384
2728
4019
526
1007
3612
320
...

result:

ok 100 numbers

Test #9:

score: 0
Accepted
time: 0ms
memory: 35612kb

input:

100
4 4
WNNN
W??E
W??E
?SSE
4 4
?NN?
W??E
W??E
SSSE
4 4
WNNN
W???
W??E
SSSE
4 4
WN?N
W??E
W??E
SS?E
4 4
WNNN
W??E
W??E
SSSE
4 4
WNNN
W??E
W??E
SSSE
4 4
WNNN
???E
W??E
SS?E
4 4
WNNN
W??E
W???
SS?E
4 4
WNNN
W??E
W??E
SSSE
4 4
WNNN
W??E
???E
?SSE
4 4
WNNN
W??E
W??E
SSSE
4 4
WNNN
W??E
W??E
SSSE
4 4
WNNN...

output:

112
224
96
102
56
56
106
108
56
158
56
56
112
56
56
112
112
62
56
158
62
112
112
68
108
96
56
124
112
56
112
69
158
56
96
124
96
108
96
62
56
56
112
56
56
56
112
62
56
158
56
96
56
68
158
56
96
96
158
158
124
124
384
62
204
56
56
56
365
62
62
68
365
62
216
112
56
56
112
56
56
96
56
62
56
432
96
56
6...

result:

ok 100 numbers

Test #10:

score: 0
Accepted
time: 2ms
memory: 35660kb

input:

100
4 4
WNNN
WWNE
WSEE
?SSE
4 4
?NN?
WWNE
WS?E
SSSE
4 4
WNNN
WWN?
WSEE
SSSE
4 4
WN?N
WWNE
WS?E
SS?E
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
?WNE
WSEE
SS?E
4 4
WNNN
WWNE
WSE?
SS?E
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
?S?E
?SSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN...

output:

2
12
2
6
1
1
2
2
1
9
1
1
2
1
1
18
18
3
1
10
3
2
2
3
2
2
1
2
2
1
2
1
2
3
2
2
6
2
2
3
1
3
6
3
3
1
2
3
1
63
1
2
1
8
2
1
2
6
3
6
2
2
24
1
12
3
1
1
8
3
1
1
24
1
4
2
3
3
2
1
1
2
1
1
3
6
2
3
3
1
1
9
4
6
2
1
2
8
2
1

result:

ok 100 numbers

Test #11:

score: 0
Accepted
time: 0ms
memory: 35656kb

input:

100
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
?SSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSS?
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN
WWNE
WSEE
SSSE
4 4
WNNN...

output:

1
1
1
2
1
1
2
1
1
1
1
1
1
2
1
1
1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
2
1
1
1
1
2
1
1
2
1
4
1
1
1
1
1
1
3
1
1
1
1
1
2
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
1
1
1
1
1
1
1
1
1
1
1
3
1

result:

ok 100 numbers

Test #12:

score: 0
Accepted
time: 3ms
memory: 35548kb

input:

100
5 5
WNNNN
WWNNE
W??EE
WSSEE
S?SSE
5 5
WNNNN
WWNNE
???E?
WS?EE
SSS?E
5 5
WNNNN
WWN?E
WW?EE
WSSEE
SSSSE
5 5
WNN?N
WWNNE
WW?EE
WSSE?
SSSSE
5 5
WNNNN
WWNNE
?W?EE
WSSE?
?SSSE
5 5
?NNNN
WWNNE
WW?EE
WSSEE
S?SSE
5 5
WNNNN
WWNNE
W??E?
WSSE?
SSSS?
5 5
WN?NN
WWNNE
WW?EE
W???E
SSSS?
5 5
WNNNN
WWNNE
WW?EE
?S...

output:

8
36
8
4
8
8
16
76
16
64
8
4
8
4
8
44
8
18
8
22
16
8
8
4
8
40
8
28
8
48
32
9
48
12
4
8
16
4
96
8
8
4
16
8
18
8
68
8
4
8
16
9
8
16
12
40
16
8
16
16
16
4
8
16
16
39
124
16
8
4
22
16
24
328
8
8
44
8
64
8
44
4
8
8
8
8
8
8
4
4
4
8
4
32
4
16
8
16
4
72

result:

ok 100 numbers

Test #13:

score: 0
Accepted
time: 1ms
memory: 35664kb

input:

100
5 5
WNNNN
WWNNE
WW?EE
WSSEE
SSSSE
5 5
WNNNN
WWNNE
WW?EE
WSSEE
SSSSE
5 5
WNNNN
WWNNE
WW?EE
WSSEE
SSSSE
5 5
WNNNN
WWNNE
WW?EE
WSSEE
SSSSE
5 5
WNNNN
WWNNE
WW?EE
WSSEE
SSSSE
5 5
WNNNN
WWNNE
WW?EE
WSSEE
S?SSE
5 5
WNNNN
WWNNE
WW?EE
WSSEE
SSSSE
5 5
WNNNN
WWNNE
WW?EE
WSS?E
SSSSE
5 5
WNNNN
WWNNE
WW?EE
WS...

output:

4
4
4
4
4
4
4
8
4
4
4
4
4
4
4
4
4
4
8
4
4
4
4
4
4
4
4
4
4
4
4
8
4
4
8
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
4
8
4
4
4
8
4
4
4
4
4
4
4
8
8
8
4
4
8
4
4
8
4
4
4
4
4
4
4
4
4
8
4
4
4
4
4
4
4
4
4
4
4
4
4
8
4
4

result:

ok 100 numbers

Test #14:

score: 0
Accepted
time: 1ms
memory: 35660kb

input:

100
6 6
WNNNNN
WWNNNE
WWWNEE
WWSEEE
WSSSEE
?SSSS?
6 6
WNN??N
?WNNNE
WWWNEE
WWSE?E
WSS?EE
SSSSSE
6 6
WN?NNN
W??NNE
W?WNEE
WWSEEE
WS?SE?
SSSSSE
6 6
W?NNNN
WWNNNE
WWWNEE
W?SEE?
WSSSEE
S?SSSE
6 6
WNNNN?
WWNNNE
WWWN?E
??SEE?
WSSSEE
SSS?SE
6 6
WNN?NN
?WNNNE
WWWN??
WWSEE?
WSSSEE
S?SSSE
6 6
WNNN?N
W?NNNE
WW...

output:

4
2
3
4
8
2
2
1
2
3
10
24
2
12
6
4
2
3
1
1
4
4
16
6
4
8
4
10
2
2
16
6
6
6
1
24
4
1
4
2
3
12
12
4
14
2
18
1
3
32
6
6
4
8
3
1
5
2
24
18
12
96
4
4
8
3
16
4
1
24
6
1
6
2
2
2
12
4
2
12
6
6
8
3
6
3
1
12
4
1
4
2
12
2
2
2
2
16
4
3

result:

ok 100 numbers

Test #15:

score: 0
Accepted
time: 5ms
memory: 35532kb

input:

100
6 6
WNNNNN
WWNNNE
?WWNEE
WWSEEE
WSSSEE
SSSSSE
6 6
WNNNNN
WWNNNE
WWWNEE
WWSEEE
WSSSEE
SSSSSE
6 6
WNNNNN
WWNNNE
WWWN?E
WWSEEE
WSSSEE
SSSSSE
6 6
WNNNNN
WWNNNE
WWWNE?
W?SEEE
WSSSEE
SSSSSE
6 6
WNNNNN
WWNNNE
WWWNE?
WWSEEE
WSSSEE
SSSSSE
6 6
WNNNNN
WWNNNE
WWWNEE
WWSEEE
WSSSEE
SSSSSE
6 6
WNNNNN
WWNNNE
WW...

output:

1
1
2
2
1
1
1
1
1
1
1
1
3
1
1
2
1
2
1
1
3
1
1
1
1
2
1
1
2
1
1
1
1
1
1
1
1
2
1
1
2
1
1
1
2
1
1
1
1
1
1
1
2
1
1
4
1
1
1
1
1
1
2
1
1
1
1
1
1
1
1
2
1
1
1
1
9
1
2
1
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

result:

ok 100 numbers

Test #16:

score: 0
Accepted
time: 0ms
memory: 35664kb

input:

100
5 5
WNNNN
W???E
W???E
W???E
S?SSE
5 5
WNNNN
W???E
?????
W???E
SSS?E
5 5
WNNNN
W???E
W???E
W???E
SSSSE
5 5
WNN?N
W???E
W???E
W????
SSSSE
5 5
WNNNN
W???E
????E
W????
?SSSE
5 5
?NNNN
W???E
W???E
W???E
S?SSE
5 5
WNNNN
W???E
W????
W????
SSSS?
5 5
WN?NN
W???E
W???E
W???E
SSSS?
5 5
WNNNN
W???E
W???E
??...

output:

1167
2118
1112
1222
2554
2334
3554
2424
1778
7792
1212
1112
1112
1112
2945
2053
1866
2497
1212
1167
4448
1112
1212
1167
1778
4707
1277
1833
1112
4877
4848
1212
19966
2945
1112
1778
4406
1112
7624
1866
1112
1212
2334
1778
2108
2032
2334
1112
1112
1212
2118
1212
1112
2224
3089
1267
2224
1167
2224
2032...

result:

ok 100 numbers

Test #17:

score: 0
Accepted
time: 3ms
memory: 35664kb

input:

100
5 5
W?N?N
?????
?????
?????
?S???
5 5
?????
?????
W???E
W????
?S?S?
5 5
W??NN
W???E
????E
????E
S??SE
5 5
?N?N?
????E
????E
W???E
SSSSE
5 5
WNN?N
?????
W???E
W????
??S??
5 5
WN?NN
?????
W????
????E
S?S?E
5 5
W?N?N
W???E
?????
W???E
SSSS?
5 5
W?NNN
?????
?????
?????
?SSSE
5 5
WNNN?
?????
W???E
??...

output:

68780
107846
5301
7748
17619
7081
4406
14315
10801
5549
29902
34107
19172
41704
12899
19976
14673
13405
20720
1277
81812
13570
17058
79196
12767
72898
19369
33472
13932
5301
154115
63250
9418
2323
3104
5008
35639
5839
6449
23079
24279
12657
41780
34694
10174
21275
21787
149113
5384
12464
134998
8226...

result:

ok 100 numbers

Test #18:

score: 0
Accepted
time: 2ms
memory: 35664kb

input:

100
5 5
?????
????E
?????
????E
?????
5 5
?????
?????
?????
?????
S????
5 5
?????
?????
?????
????E
?S???
5 5
??N??
?????
?????
????E
???S?
5 5
??N??
?????
?????
????E
S?S?E
5 5
W????
?????
?????
?????
?????
5 5
?????
?????
?????
?????
???S?
5 5
????N
????E
W????
?????
?????
5 5
?????
?????
?????
??...

output:

304812
295045
267282
176600
64775
295045
408362
97899
607712
305610
348526
206116
607712
295045
92970
607712
85899
137254
436030
607712
271680
436030
206116
100958
607712
295045
185016
607712
216858
176600
295045
607712
408362
133026
280284
607712
110693
408362
267282
408362
205549
607712
216858
800...

result:

ok 100 numbers

Test #19:

score: 0
Accepted
time: 3013ms
memory: 36984kb

input:

12
765 583
NNNNNNNNNN?N?NNNNN?NNNNN?NNNN?NN??NNNN?NNNNNNNNNN?NNNNNNNNNNNNNN?N?N?N?NN?NNNNNNNNNNNNNN?NNNN?NNNN?NNNNNNNN?NNNNN?NNNNNNNEEEEEEE?E?EEEEEE?EEEEEEE?EEEEEEEEEEEEEE?E?EEEEEEEE?E??EEEEEEEEEE?EEEEEEEEEEEEEE?EEE??EEEEE?EEE??EEEEEEEEEEEEEEEEEEEEEEEEEEE?EEE?EEEEEEEEEEEEEEEEEEEEEEE?EEEEEEEE?EEEEEEE...

output:

495851866
809507864
679420791
96
404843191
24576
206848
880640
238
876
32
1

result:

ok 12 numbers

Test #20:

score: 0
Accepted
time: 2380ms
memory: 36292kb

input:

22
315 1
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
W
?
W
?
?
?
?
?
?
?
?
W
?
?
?
?
?
?
?
?
?
?
W
?
?
?
?
?
E
?
?
?
?
?
?
W
?
?
?
?
E
?
?
?
E
?
?
W
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
W
?
W
?
?
?
?
?
?
?
?
?
W
?
?
?
W
?
?
?
?
?
E
?
?
?
?
?
?
?
?
?
?
E
?
?
?
?
?
?
E
?
E
?
?
?
?
W
?
?...

output:

477528076
932253017
546414821
436231729
767212961
753425299
746144816
69571238
94774841
712039816
100770782
536292699
933083168
749292585
233240851
531252741
404400992
730535288
377486731
14112
441
11

result:

ok 22 numbers

Test #21:

score: 0
Accepted
time: 2543ms
memory: 36544kb

input:

19
880 207
?NN??N?N??N?NN?N?NNN??N??N??N?N?NN??N?NNN?N?NN?N?NN?N?N?N????N?NN???N?N?N?????N?N?N?N?NN????NN??????N?N??NNNN???NN?N??NN???N?NNNN???NNNN??N???N?NNNN???N?NNN??N???????N??NN??N??NN??NNN?N??N?N??NNNNNN?N?NN?NN?
NNN???NN?N?N???NN??NNN?N??N????NNNN???N??NN?????N??NNNNNNNNN?NNNNN?N???NNN??NN??N...

output:

990920646
235051208
878168566
363195075
575282830
858642597
99475123
381319260
252544862
337440096
772543116
128902076
47387889
444596147
11946
24
3
1
4

result:

ok 19 numbers

Test #22:

score: 0
Accepted
time: 2315ms
memory: 36256kb

input:

24
860 251
NNNNNNN???NNNNN?N?NN?NN?N??NN???N??NNN????NNNNN??N??NNNN?NN?NNN??NNN?????N?NNN?N?NN?NNN??NNNNNNN?N?N?N?NEEEE?EE?EEE?E?E??E??EEE??E?E?EEE?E??EE?EEEEE??E?E?E??EEE????E?E?E??E??EEEEEEEE??E?E?E?E?EE??EEE??E??EE??E??E???EE?E?E??E?EEE?E?EEEEEE??EEEEE?E?E??E
?N?????NN???N?????NN?????N?N??N?N???N...

output:

341478607
178477640
238866597
760490789
257385777
966030498
382950
17975058
941514615
518956768
441211809
720564832
119182965
630491877
568600592
337282588
150218111
742601423
1174797
130397105
841359738
4
3
4

result:

ok 24 numbers

Test #23:

score: 0
Accepted
time: 2345ms
memory: 36268kb

input:

18
147 952
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW...

output:

10
84
12
6
6
3
6
6
30
20
12
1
1
3
1
1
1
1

result:

ok 18 numbers

Test #24:

score: 0
Accepted
time: 3047ms
memory: 36836kb

input:

15
436 889
????WW??WW??W?W??????????????W??W????W??W?????W??W?????W???W???????W?????WW?W?WWW????????W???W???????W??W???W??W??????W??WW???W????W???W??W?????W???W?W???W??W??WW????WW???W?W?????????WW??W??W??W?????W???????????????????WW???????W?????W??W????W???????W?????W?W????W??????W??W????????????W??...

output:

678653349
813503368
855534745
141741923
240556704
621219704
835678972
378931916
695727293
29409441
690997659
566505909
512
945
22

result:

ok 15 numbers

Test #25:

score: 0
Accepted
time: 2375ms
memory: 36324kb

input:

20
227 589
??????????????N????????????????????????????N?????????N????N??N????????????????????????N???????????????N?N??????????????????????N????????????????????????????????????N??????????????????????????????????????????????????????????????????????????????????????????N???N?????????????????N??????????N...

output:

23724695
903940930
972972674
56000607
295146118
789975841
85356456
738999969
594065648
320536346
824044585
868075890
53458887
922844342
997807315
39224260
939578467
99855333
507873
120

result:

ok 20 numbers

Test #26:

score: 0
Accepted
time: 2496ms
memory: 36408kb

input:

24
63 10
NNN??NNNNN
NNNN?NNNNN
NNNN?N?NNN
NNNN?NNNNN
NNNN?NNNNN
NNNN?NNNNN
NN?N?NNNNN
NNNN?NN?NN
NNNN?NNNNN
NNNN?NNNNN
NNNN?NNNNN
NN?N?NNNNN
NNNN?NNNNN
NNNN?NNNNN
WNNN?NNNNN
WNNN?NNNNN
WNNN?NNEEE
WWNN?NN?EE
WWWN?EEEEE
???NEEEEEE
WWWWS?????
????SEEEEE
????SSSSEE
????SSS?EE
????SSS?EE
????SSSSSS
????S...

output:

326370
312
48
511690219
3456
360710125
310378483
1474560
562036693
576
4
144
10616832
3686400
11520
192
4
2048
6144
1
144
1
1
1

result:

ok 24 numbers

Test #27:

score: 0
Accepted
time: 2815ms
memory: 36816kb

input:

15
760 907
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

output:

1179648
3
26880
48
1168
384
700
4
4
4554
31000
171
1
2
1

result:

ok 15 numbers

Test #28:

score: 0
Accepted
time: 1ms
memory: 35660kb

input:

100
5 5
?????
????E
???E?
????E
?????
5 5
?????
?????
?????
?????
S????
5 5
?????
?????
?????
??S?E
?S???
5 5
??N??
?????
???E?
????E
???S?
5 5
??N??
?W???
???E?
?S??E
S?S?E
5 5
W????
?????
?????
?????
?????
5 5
?????
?????
?????
?????
???S?
5 5
????N
????E
W????
?????
?????
5 5
?????
???N?
???E?
??...

output:

183652
295045
131874
85068
5940
295045
408362
97899
62196
46395
348526
28359
264396
116672
48975
607712
85899
137254
147159
159947
101076
175350
9288
100958
607712
295045
16384
73199
216858
48972
295045
73199
408362
133026
280284
264396
110693
56949
39262
408362
205549
108046
216858
80044
88164
1471...

result:

ok 100 numbers

Test #29:

score: 0
Accepted
time: 10ms
memory: 35660kb

input:

100
20 20
????????????????N???
????????????????????
????????????????????
????????????????????
????????????????????
????????????????????
????????????????????
????????????????????
????????????????????
????????W???????????
????????????????????
????????????????????
????????????????????
?????????????????...

output:

586796468
221211796
867397739
362607979
883021206
233724419
343425119
807220470
691873075
560628093
688228894
336900540
353947584
709868107
916478088
850736219
964417914
633008700
217817356
391493420
814621992
293860528
267902871
717565266
834296852
221211796
498799202
60757172
946016985
755859677
4...

result:

ok 100 numbers

Test #30:

score: 0
Accepted
time: 292ms
memory: 35528kb

input:

100
100 100
????????N???????????N????????????????????????????????????????????N??????NNN??????????N?????N?N??????
W?N?????N?N????????????????N??????????????N???????????????????????N????????????????????NN?????????N?
????????N?????N???????????N????????N??????????????????N??NN???????????N?????N?????????...

output:

758848487
861154028
602970439
512446399
25663106
724414534
700731192
546538125
116542851
117480947
938035713
885313028
441819094
408274153
151433929
226379666
16039612
774453614
449416623
492626771
863800251
660202519
299435234
458909323
190525323
485308641
960961388
880110687
66149174
706826258
735...

result:

ok 100 numbers

Test #31:

score: 0
Accepted
time: 1437ms
memory: 35792kb

input:

50
200 200
????????????????????????????????????????????????????????????????????????????N???????????????N???????????????????????????????????????????????N?????????????????????N??????????????????N??????????????????
??????????????????????N????????????????????????????????N????????????????????????????????...

output:

247704959
744325470
198507833
715432657
840365608
873993617
331697995
761138370
146516677
940965919
233927536
700743722
455157827
578805483
12012052
585224966
989820960
564474059
69742457
530873230
23842490
897292407
883766446
973730723
509472518
898956780
732133520
274060035
447634090
906966470
368...

result:

ok 50 numbers

Test #32:

score: -100
Time Limit Exceeded

input:

2
1000 1000
????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????...

output:


result: