-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path20_regex_map_alt.go
188 lines (162 loc) · 30.7 KB
/
20_regex_map_alt.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
package main
import (
"fmt"
"log"
"metalim/advent/2018/lib/field"
"os"
"time"
. "github.com/logrusorgru/aurora"
)
func _log(a ...interface{}) {
fmt.Println(a...)
}
//
// Solution
//
type cell = field.Cell
type map2d = field.Map
type pos = field.Pos
type path []rune
type task struct {
reg path
m map2d
md map2d
max int
start pos
}
func parse(in string) task {
if in[0] != '^' || in[len(in)-1] != '$' {
panic("unknown format")
}
reg := path(in[1 : len(in)-1])
return task{reg: reg}
}
var dir = map[rune]int{
'E': 0,
'S': 1,
'W': 2,
'N': 3,
}
func (t *task) draw(start pos, s path) (pos, int) {
var i int
p := start
for ; i < len(s); i++ {
switch s[i] {
case 'E', 'S', 'W', 'N':
d := dir[s[i]]
t.m.Set(p, t.m.Get(p)|1<<uint(d))
p.X += (1 - d) % 2
p.Y += (2 - d) % 2
case '|':
p = start
case ')':
return p, i + 1
case '(':
var len int
p, len = t.draw(p, s[i+1:])
i += len
}
}
return p, i
}
func (t *task) fill(start pos) int {
cur, next := []pos{}, []pos{start}
step, max := 1, 0
for ; len(next) > 0; step++ {
cur, next = next, cur[:0]
for _, p := range cur {
if t.md.Get(p) > 0 {
continue
}
t.md.Set(p, cell(step))
max = step
for d := 0; d < 4; d++ {
if t.m.Get(p)&(1<<uint(d)) != 0 {
x := p.X + (1-d)%2
y := p.Y + (2-d)%2
next = append(next, pos{x, y})
}
}
}
}
return max
}
func (t *task) process() {
t.draw(t.start, t.reg)
t.max = t.fill(t.start)
// field.Print(&t.m)
// field.Print(&t.md)
// _log(t.md.Bounds())
}
func (t *task) part1() int {
return t.max - 1 // it's first cell is 1
}
func (t *task) part2() (n int) {
bs := t.md.Bounds()
for y := bs.Min.Y; y < bs.Max.Y; y++ {
for x := bs.Min.X; x < bs.Max.X; x++ {
if t.md.Get(pos{x, y}) > 1000 {
n++
}
}
}
return
}
//
// tests
//
func verify(v, ex int) {
if v != ex {
log.Output(3, fmt.Sprint(v, "!=", ex))
os.Exit(1)
}
}
func test() {
t0 := time.Now()
log.SetPrefix("[test] ")
log.SetFlags(log.Lshortfile)
test1 := func(in string, ex int) {
t := parse(in)
t.process()
verify(t.part1(), ex)
}
test1(`^WNE$`, 3)
test1(`^ENWWW(NEEE|SSE(EE|N))$`, 10)
test1(`^ENWWW(NEEE|SSE(EE|N))$`, 10)
test1(`^ENNWSWW(NEWS|)SSSEEN(WNSE|)EE(SWEN|)NNN$`, 18)
test1(`^ESSWWN(E|NNENN(EESS(WNSE|)SSS|WWWSSSSE(SW|NNNE)))$`, 23)
test1(`^WSSEESWWWNW(S|NENNEEEENN(ESSSSW(NWSW|SSEN)|WSWWN(E|WWS(E|SS))))$`, 31)
fmt.Println("tests passed", Black(time.Since(t0)).Bold())
}
//
// main
//
func main() {
test()
for i, in := range ins {
fmt.Println(Brown(fmt.Sprint("=== for ", i, " ===")))
var t0 time.Time
var d time.Duration
t0 = time.Now()
t := parse(in)
d = time.Since(t0)
fmt.Println(Gray("parse:"), Black(d).Bold())
t0 = time.Now()
t.process()
d = time.Since(t0)
fmt.Println(Gray("process:"), Black(d).Bold())
t0 = time.Now()
v1 := t.part1()
d = time.Since(t0)
fmt.Println(Gray("part 1:"), Black(d).Bold(), Green(v1).Bold())
t0 = time.Now()
v2 := t.part2()
d = time.Since(t0)
fmt.Println(Gray("part 2:"), Black(d).Bold(), Green(v2).Bold())
fmt.Println()
}
}
var ins = map[string]string{
"github": `^WNNNWNWSSESWWWWWWSEEEEEESWWSEEESENN(ESSEESSESESSWSWWWNNNWWWNN(NWWWWWNEN(ESNW|)WWSWWSWSSWWSESSWNWSSESWSSSSENESSSESSWNWNWSSWSSENE(N|SENEENESSSSESWWNNW(NEWS|)SWWSWWSSWNWNENEN(E(S|EE)|WWNWNWNNNWSWWWNWNWWSWNWSWSEESWWSESENENNE(SSEN(EEESWSESSEEN(NW(S|NN)|ES(E|SSWNWWSSWWSWNWWNEENNWWN(WSWWWWSESSESESWWWWWNNWWNNNWSWNWWWNWNNWWNENWWSWWNNNNWSWWWNNWSSWNNNNNNNNNESESSENENESENNNWSWW(S|NENWNEEES(ENESSWSSSEEENWN(WSNE|)NENEENWNNNNENNESESWSWSEESSW(NWES|)SEEENWNEENNEENNNWWNWWS(SE(N|EESWWWS(SENSWN|)W)|WNNNNESSENESEEES(EEENESESENNNNNWWNNESEENENENESENESSWSEESSWSSEESENNNW(SWEN|)NNNESSESEEEENESSWWWWWSSSEEEENEEENW(NEEEENENWNENWWSWNNWNWWWWNNENENNNENNWSWSSWS(SWWWWSEESE(N|SWSSW(SESENE(NN(WSNE|)EESS(WNSE|)ESE(NNWNSESS|)ES(ENSW|)WW|S)|NNNWWW(SES(EN|WS)|NNWSWS(WNWNENWWNNWWWSWSESEE(NWNEWSES|)SE(N|S(SWNWSS(E|WNNWWWSES(ENSW|)SSSWNWSWWNWNEE(S|NNE(SSENSWNN|)NWWWWSWSE(ENESNWSW|)SWWWNENNENEEEEEEEE(NWNNNENENWWSWSSSSWWNENWNNWWSWWNWSWNWNENENWNWNWWSESWWWWNNESENNENNENEEENNNWWWNEEENEEENWNENEEEESSWNWSSW(SESSEEENWNEESSSSWSSENESSESEEENNWSWNNW(S|NEESENNNWSWNNNESEENENNNNEEESSWSEEEEESSEEEENWNWSWNNWNNWNENESESS(WNSE|)ES(W|ESEENNNENESSWSEENEEEEESWWSSENESSSWNWWWNN(NESSNNWS|)WWWSWWSSENEENESSSSSSWNNWWSWNN(EENESNWSWW|)WNWWWWWNWSWNN(WSSWNNW(NNNEWSSS|)SWSSW(N|SSSSESWSWSWWWWN(EEE|WSWNWSS(EEEEESWSEEEEENWN(WSWNSENE|)NESEESSEEENWWNNNWSWN(W|NNNNN(WSSNNE|)N(ESSENNEESWSEENEN(W|EESE(SSSSESENEESSW(WS(ESWSEEESEEENNNWNNENNENEEESWSESWSSSWSSESWSESESESWSWWWSWSESEESWSSENEESSSSSWS(ES(W|SENNNNNEESSSW(NN|SESWS(SES(W|SESEENNW(WNN(NNEEEESESSEEENWWNNWNWNWNEESEEENNEESSW(N|SWW(SES(ESSENNN(W|NENENNW(S|NNESENEENNNWWWNEEEENNEESSW(N|SWSEESESEENWNNENNNNNNWNENESEEESSSWNWSW(NNEEWWSS|)SSSSS(W|SSSWSESESESSWNWWN(NWSWNNN(ESNW|)WNWW(NEWS|)SESESWSSWSESSESEENWNEN(WN(E|W(SS|N))|EESSENESSESSESSWNWWWWNWSSSSWSSWWNWWNNEENNNN(NWNNWNNWW(SESWSSWW(SWWSSEESWWSSSSWWSEESWWWWWNWNENESSENNEENWNENWNWSWNWNEN(WW(NENWNWSSWNN(SSENNEWSSWNN|)|SSSESWS(EEENWESWWW|)WWSE(SWSWWWSWWNENN(WWS(SWWWNWNEESENNNNWSWWN(E|NNWWWN(EEE|WSSSSWNWSWW(NNE(S|NEN(NESSSW|W))|SSW(N|SES(WWNSEE|)ESWSSEEENNW(SWEN|)NNNN(WSSNNE|)ESSES(W|SENNEE(SSE(ESWSSSENNESESSSSEESSWWWWWNNNN(WSSSWSWNNENNNWWW(WWNEEENESENE(NW(NN|WW)|SS)|SES(ENSW|)SW(SESSSEEN(E(N|SEESENEESWSESWWNWWNWSWSSENEESEEEESWSSSWNWWWWNWN(WSWSSESSENEN(WNWESE|)ESSEESEESSSEESWWSWSEENEEESSWNWSWWSESWSESENNNEEESWSSES(WW(NNN|WWWWN(NWNENWWWNEE(NWNNNEE(SWSNEN|)NNWSWWNENWW(N|WWWWSWWWNNENWWNNNEESWSEESE(NNWNNE(S|NE(NE(NWN(EE|WWSESWWWWSS(WNWSWNWWNWSSWSESWSSSWWSWNNNNNWNWWSSWSWWSWNNWNWNEEES(W|E(SWEN|)ENNW(NEE(NWWNWNN(WSNE|)E(S|EE)|SENEEESW(SEE(NNN(WW|E(EE(NWWWNSEEES|)EEES(WW|ENEENE(N(WNWSSWWNE(WSEENNSSWWNE|)|EE)|S))|SS))|SSW(SESWENWN|)N)|W))|S|WWWWWWWWNN(ESNW|)WNNWSWWWSWWSESESENN(NEESESSEESESWWSSWWSEEENNEESSW(SEEEESSWNWWWSEESESENESSSEESEEESWWWSSEEN(W|ESSWWWS(EEEENENWNENWNNENWWSWNNNWWW(NENNNN(EESE(SSWNW(SSEESENNEESWSS(ENEEESENESESWSEEENENENN(ESENENESSSENNNESSSE(N|SSWNWWWN(WSSSEEN(ESSSSSS(WNNWNWWSESESWWWWNWNENNE(SSSEWNNN|)E(EEESNWWW|)NWW(NENE(N|S)|WSWS(E|WSWNNWWSSE(N|SS(WNWSWW(NENENWW(NN(W|EE(SWEN|)EE(EE(S|E)|NNWWS(E|WWNENE)))|S)|W)|EEN(E(SEWN|)N|W)))))|EENNE(SSENSWNN|)NWW(SS|NN))|W)|N))|WSWNNNNWNNNWSSWNWNW(SWSSSW(SSENESEENWNN(NWSSNNES|)ESE(N|SE(SWSES(S|E)|N))|W)|NNESE(EE|S)))|WW)|N)|NNNW(SWEN|)N)|WSSSW(NNWWNW(S|N(NWNNWESSES|)E)|S))|SEES(S|WW))|WNNNWSSSWWWWWWWNEENWNWNENEEEESSWW(WNEEWWSE|)SSEEN(E(S|NNN(EESWENWW|)NNWWS(WWWNWSWS(E|WWNNE(S|ENWNWSWNNEEEENWN(WWWNENNNN(NN(N|ESSE(SWSEWNEN|)E)|WSWWWSSWWSWNWNWWNWWNWW(SSSEEN(WNSE|)ESSWWWSSSSENNESSESSSWSWNW(NNESEN|SSEESWWSESS(WNSE|)EEEEEEEENENNNNWSSWS(WWS(WNNWSW(WSEEWWNE|)NNEN(W|ESESENNE(NENENNENWWNWN(WSSESWWNNNNWSSSW(WNEN(NNEWSS|)WWW|SESWSSENES(S|ENEN(ENSW|)WW))|EEEN(NE(N(ESNW|)W|SSS(SSSSW(S(W|ESWSSEESWSS(ENEENWNN(ESE(S(SSWWEENN|)E|N)|W(W|NNN))|W(W|NN)))|N)|EEE|WW))|WW))|S))|EE)|E))|NNEENNWSWNNENWNNNESSESSEENNNESSSEEESSWNWSSEEE(SE(ES(E|WWSSWWNENWWN(WWS(ESEWNW|)WN(NEENNWSWN(SENESSNNWSWN|)|WW)|EE))|N)|NNNEENN(EEESWW|NWSSWNWSWWNENENE(N(ESNW|)WWN(WSS(S|E|WNNWWWWNW(SSEESE(ENWESW|)S(W|SS)|NEN(W|ESSEENWNEESS(NNWWSEWNEESS|))))|E)|S)))))|EESSSS(WNWESE|)ESEN(NWES|)E)))|E))|W)))|N)|W)))|ENE(S|E)))|S)|S))|ESWWSW))|E)|E))|ENEES(W|ENENWWWW(W|NENNNWS(WNNNNNNWWS(WWNENENWNENNESSSENNNNNNNNWWWS(ESSS(ENNNSSSW|)W(NN|WSESWSS(WWN(WNWSNESE|)E|S))|WNNENN(W(S|WWWWW)|ENNESESEEESENENWWNWW(SEWN|)WNWNWW(NNNENESSS(WNSE|)ENNNENESEEN(WNW(WWWS(WWSWNWW(WNEEWWSE|)SESESSW(SEWN|)N|E)|N)|ESESSWSESEESEESSEENNNW(SS|WNW(NWSWNNNN(ESEEN(W|ESSW(SESEENWNEENNNEESESENESSSWWN(WW(SSSSSWSSW(NNNEN(NN|W)|WSSEEN(W|ENESEENWNW(W|NEENWNEN(WW(SS|N)|EENNNNNN(WWW(SEEWWN|)WNWWS(E|WSW(SESWENWN|)WWNNNESSENENENNNNWW(SSS(S|ENN|WWNE)|N(NEEE(NWNEWSES|)S(WW|E(SSWNSENN|)N)|WW)))|NESSEENWNEENWWNEEEESSW(N|SWSSSSSEEESESENENNNESENNWNENWNENWNEENWNWSWWNWNNESE(S|EENNENNENEENWNENNEESSW(SSEEESSE(SWWWWSEEESE(SWWWN(E|WWNNNEN(ESENSWNW|)WWSSW(SESWS(WNNSSE|)SESENE(NWWEES|)SENEESSSSE(SWWNWNN(WWWSSESE(NNWESS|)ESSWWN(E|WSSWSW(NNNNE(SS|E|NWNNE(N|S))|SSEEN(EESWSSSSSENENWNEN(NNNEESSE(SWSESWW(SESE(SSSWNNWSWWWWSESENEESWSWWSESSWNWWNNE(S|NWNWSSWSSE(SWSSSWWSEEENNNESSEENEEEEE(SSWWWN(EE|WSSWWSWSESWSEESSESEENESSE(SSWWWNWN(EESEWNWW|)WWSWWWNNWSSS(WNNWWNENE(S|NEES(EEN(WNNNNN(ENEEWWSW|)WSWNWWWWNWNEESENNWNENESE(SWEN|)NNNWWWS(WWSE(SWWNNNENE(S|NENNWWS(SWSWSWSSSE(SSSWNWSWWWNNWWSWNNEEEEES(WSEWNE|)E(E|NNNNWSSWWNNWNEE(NNENESES(ENENNEEEESENNNNEESEENE(NWW(S|WWWWSSWWS(EE|WWWNEENNEE(SWEN|)N(WWN(E|NWSSWSWWNENENWWSW(WSESSSSENE(SS(ESWENW|)WWWNW(NENNW(SWEN|)NN|SWSSE(NEWS|)SWWWWSSWSSSWWWSWNWSSESESSESWSWNWNWSWWSWNNNESENEN(ESESNWNW|)NNWWNEENWWWNEENNNWNWSSESWWSWNWNEENNNEN(WWSSSWW(NENWNN(ESNW|)WW(S(WNSE|)E|N)|SSSSSSS(WW|EESSSSE(SSEEENESSSSWNNWSWWS(WNN(NNWNNNW(NEWS|)SSS|EE)|EESESENESENNENNESEEENWWNW(NENENWNEEEESSWNWSSWSEESEEENEEEENNENWWN(EEE(NNNEEWWSSS|)SSSSESEE(SWSSSES(ENSW|)WWWNWWS(WWNWSWWWNNNESE(SWEN|)NESENNW(WWWWSWSWSES(ENNSSW|)WWWNENW(NEEWWS|)WSSWWWWW(N|W)|NEEESESWS(EEE(NNW(NWNNSSES|)S|S)|W(NN|S)))|E)|NWNWNEN(WNSE|)ESES(W|ES(WSNE|)ENE(NWWNWESEES|)S))|WSWWW(N(EE|N(WWWWWNEN(E(S|NNNENE(NWES|)SS(ENSW|)W)|WWS(SS|W))|N))|SS(SWNWESEN|)EEN(EESWENWW|)W))|WWSW(S(E|S)|NN)))|NNNEEN(ESNW|)WNNWNWSW(SEESNWWN|)NN)))|NESSEES(W|SEEESENES(ENNWN(WSWWNENNWSW(SS|WNNNN(ESS(S|EE)|WNWS(SES(W|SS)|WWNN(ESNW|)NNWSSWNNN(WSSS(SEEWWN|)W|EEE))))|EENEESSW(N|W))|SWSESWWWNENWWN(WSSESNWNNE|)E))))|N(EENSWW|)W)|NNNNNEESWSESW(ENWNENSWSESW|)))|EEEE(NW(NNESNWSS|)W|EEE))))|SSWWSWW(SSWSS(W(NN|W)|ENENNEENEEEENE(WSWWWWEEEENE|))|N(N|E)))|WS(WNSE|)E)|SS))|NN)|E))|E)|EE)|ESS(WWSEWNEE|)E)|W))|EEEEE(E|N))|NNNWNNNNE(SSS|NWWSW(SESWW(NW(NEWS|)S|SES(ENSW|)(S|W))|N))))|NWNNWN(WSSS(ENSW|)WWW(NWES|)S|EE(NW(NEWS|)W|SS)))|N))|N)|NNNN)|NNNNWSW(NNEEWWSS|)WWWS(E|W))|W)|W)))|E(S|N))|NNNN)|N))|N)|NNNNWNNE(S|NNNWSSW(SSSS(W|E)|WNENNEENNNWNWWWWNEENWNENNNNNWSWWNWNNESE(S|ENWNNWWWWWNNWSWWSSSSENNE(NWES|)EESWSW(N|SEEE(N(NNEEWWSS|)W|SESSEEE(NWWEES|)SWSWNWWWNWWSSWSWNNWNNNN(WWWSS(EE(NWES|)SSSSE(SWSWNWWSESESEEN(W|NENEEESWWSEESESEENEEN(EESE(S(ENSW|)WW(WWSWSEEE(N(ESNW|)W|SWS(E|WWSS(ENSW|)WSS(ENSW|)SWWNWNWWWSSSSEES(EE(SWEN|)NWN(EESNWW|)NWSWNNE(WSSENEWSWNNE|)|WW(SSSS(SE(SESSWW(WSSEESE(NN(WW|E(NNNNWESSSS|)S)|SSWNWWN(W(NN|S)|E))|N(E|N))|N)|WWWWWW(SSW|NEEE))|WNNWNENWNNNEES(WSNE|)EENWNEESSEE(S(W|S)|NENN(EE|WW(NEN(ESNW|)WWWNW(N(EESEWNWW|)N|WSSE(N|S(ENESNWSW|)WWS(WNWNENE(S|NWWSW(SSSESNWNNN|)NN(E|N))|E)))|S(S|E))))))))|N)|N)|WNNWWSESW(S|WNNNN(W(SWEN|)N|EES(W|EE)))))|N)|WNNNEEENNWNNWWNWWSESSES(WWNWN(WNENNNWNEEESWSEENNNNNWNEESSESEENNENNWNNNWSSSS(E|W(SESNWN|)NWWWWWWWNWNEENEEESS(WNWSWENESE|)EENWNENNNNNWNWSSSWNWWSSS(WSWWNENENWWWS(E|SWNNWNEENNNNNNESSESSSE(NNNNWNENNNWNWSWNWNN(ESENEES(SEEESWWSESENENESESSSSESW(WNNNW(NEWS|)WSESWS(E|WSW(SEENSWWN|)NNENNW(S|N))|SESSENEENENENEEEEENWNEESSSESESSESWWNWSSWSEEESWWSESESENN(EE(NWWNN(WW|ESENNWNNWNEE(NWNWW(SEWN|)WNNESEEE(NWWNNENNE(SSSWENNN|)NWN(E|WSWSWNWN(EE|WSWNWSSEEESWSS(ENESENN(ENSW|)W|WNNWWWWNENE(NWWWWWWWSSS(WNNWW(SEWN|)WWN(WSNE|)EEEE|ESWSEENEE(NNN(WSSWNNWS(NESSENSWNNWS|)|E)|ESEEE(NWWEES|)SWS(E|WWN(WNWSWSW(NWSNES|)SES(WSE|ENENW)|E))))|S))))|S)|SS))|SSSW(SWWWN(EE|WSWWWNWNEESENN(ESEWNW|)NWN(NNNENWNEE(NWNWWWWSESWSSSEE(SSSS(E|WNNWSWNN(WNNE(S|NN(WSWSSWWS(EESESWSEESWSSENE(NN|SESEEESSENNESEESWSSSWNWWWWSW(SEEEN(W|ESESENENNEN(NNE(N(WWW|N)|SSSSSSW(SESWSW(SEE(N|SWWSESSSSW(SEE(S|NNNNN)|NNN))|WNN(W|E(S|N)))|NN))|W))|NWNNN(WN(E|WSSSWN(WWSWSS(WNNN(N|E)|EE(SS(WNSE|)SSS|N(N|ESENENN(SSWSWNSENENN|)|W)))|NN))|EESWSEE(EEENSWWW|)NN)))|W(NNEENSWWSS|)SSS)|N))|EE))|NWNENNE(WSSWSEWNENNE|))|E)|E))|NN))|W))|W)|WWSESSESS(ENEESW|WSESSWSWWSWNWNWNNEENWNEENWWWNWWNWSSSSSSESWSWNWWSWNNWSWSESWWSEESWSWSSWWWS(SSENNESSEEENESEENNENENNNWSWNNN(WWSSSWSESS(WNW(SSWNSENN|)N|E(NEN(WNNNSSSE|)E|S))|N|EES(ESESSW(N|SESENENNNEN(WW(WNE(E|NW(WSNE|)NNNWNEENWWNE(WSEESWENWWNE|))|SSS)|EE(EN(E(N|S)|W)|SWSWSSEEE(NW(N|W)|SSWNWSSSWNNW(NEWS|)WWWSWN(NEWS|)WSSWWSWNWSSSWSSSSSWSWW(NNE(S|ENNWNENNWNWW(NEEESE(N|S)|SES(E|WSSS(WWWNEENWWWN(E|WSSSS(ENNSSW|)SSWNW(WN(WWS(WNNNSSSE|)E|N)|SSSE(N|SWS(ESEN|WN))))|E(NN|E)))))|SESESEESESWSEENNENENEESSSSESSSESSSESEE(EEEENNWNENWNWNWSWNWNWSW(NNWNNESESENNNESSSSEEENWNNENENWWSW(SSS|NNNNNEENENNESSESE(NNEENE(ESWENW|)NNWWS(WNWNWNNWSW(NNEWSS|)WSESE(ES(ES(EE|S)|WWSWNWSSWNWNEN(WWWNW(NEESNWWS|)WWSSWNWSWWSSSW(N|SSSENNEESWSESENESS(ENENNNNNENE(SSWSSEEE(NN(EENEWSWW|)W(SWEN|)N|SWWSW(SS(WNSE|)E(NENESNWSWS|)S|N))|NWWW(NEWS|)S(SSSWNW(SSEESNWWNN|)NN(ESNW|)WWSSEN|E))|WWSWW(SEWN|)WNW(S|NEESEN|W)))|E(NN|E)))|N)|E)|SESWWSW(NWN(E(NWES|)E|WWSSE(N|E))|SSSENE(ESSSWSWSWS(WN(NNN(N|ES(ENENSWSW|)S|W)|W)|SEEN(W|E(N(NE(NN(N|EESWSE)|S)|W)|SSWS(WWNEWSEE|)EE(SWSS(ENSW|)S(S|W)|N))))|N(W|N)))))|SESE(N|SS(WNSE|)SENESE(E|NNNWSWN(SENESSNNWSWN|))))|SWWWWWNWNWSWWSSWWNENWWNNWNEENNEEEN(EE(NNW(SWN|NEN)|ESWSESESS(SEWN|)WNWNWSWSWNNN(E(ENSW|)S|WSSWSE))|WWWWSWNWSW(SE(SSSWSSSS(WNNWN(WSNE|)E|ENNE(N(W|N)|ESSW(SSENEESENEESEESS(E(SWEN|)NENNESE(SWEN|)NNWWWN(EEEESSENESEN(SWNWSWENESEN|)|WSS(ESNW|)WNNNWSW(S(WWW|E)|N))|WWWWSSS(E|WWNNE(NN(W(WWWNNSSEEE|)(N|S)|EE(N|EE))|S)))|N)))|EE)|NW(NN(NNNESSSSENEN(ESSW|WN)|W)|S)))))))))|W))|WNNWSSWWNWSWNNWWWWS(SW(SESNWN|)WNENWNEEEEEEEEE(S(S|WW)|NEENWWNEENWWNWNWNEENWWWWWNNESEEENNEESWSESSEENNNW(SS|NNEES(W|ESSEEESS(WWN(E|WSSSWSSE(NENNEWSSWS|)SWSE(SSWNW(WW|S|NNNNNN(WSWNW|ENNNN))|E))|EESENNNNNWWWWS(EEESWSE(WNENWWEESWSE|)|WNNN(ESENEEES(E(SSSSSS|NEEEEES(WW|SENNESSESS(SSW(SE(SWWNWESEEN|)E|N)|E)))|WW)|W(WWWWWS(WNWWSS(E(SWEN|)N|WWWNWWN(WWSESSSWWWSESWSSSESSWSWNWSSWWSEE(SW(WWNNWWSS(ENSW|)WSSWWNENNENWNENESENNEESWSEENNENE(SEWN|)NWWWNNNENWWNWNNN(WWWWSSWWNWWWWN(EEEEES|WSSESWSWWNWSSESWWNNNNEENN(ESSSNNNW|)WWS(WNWSSWSESSE(NNN|SWWNWSSSWSSSSSENNNNENNESESENEEEENNW(SWWWWEEEEN|)NEENEENN(WSNE|)ESESSEEEEEN(ESESSSS(WWSWWWWWWSESENE(SSSSWWWWSW(NWNNWSSWNWSWWWNNWSSSSWNWNEN(NNENWNE(EESEENN(WSNE|)ESSEES(ESEN(ESS(EENWESWW|)WW|NNNWS(WN(WSNE|)NEENNN(WSWSEWNENE|)E(SSSES(ENNEEN(WWWSNEEE|)ESENESSWWSWWNE(WSEENEWSWWNE|)|W)|N)|S))|WWSWNWW(WN|SESW))|N)|WWWWWWNWNNNESEEE(NNWNNE(S|ENWWNENWWWWNENWWNEEESSEENEE(SS(W(N|S)|E)|NWN(EESNWW|)WSW(S|NWWWWWWWSSWSWW(NENN(ES|WS)|SSSESSSENENNNN(WWSESS|EESWSEESWSW(SSESWSSEE(N(NNN(W|EN(W|NEE(NWN(W(S|WNNWW(NNESNWSS|)W)|E)|SS(SE|WN))))|W)|SESESSSSEEE(ENN(ESSENEENNE(WSSWWSNEENNE|)|WNENWWWSESWSEE(WWNENWESWSEE|))|SWWWWWSSWSWSSESSSWNNWSWWSEESSWNWW(SESWSEEEEENENN(WSW(SWWEEN|)N|NNNNN(W|ESESWS(EENENWNNNEN(WWWSES(WW|S)|ESES(WWSE|ENES))|SSSSSSW(N|WWWWSSEEN(W|EESWSSESSWNWWSWWNW(SSSEESWSSW(SESENESSSSESWSESSS(WNNWNNNWSW(NNN(ESENSWNW|)N|SESSESWSSS(WNNNNN|E(NN|S)))|ENNNENENWW(NEENWNWSW(S|NNENNWW(S(WNSE|)E|NNESEEESENENEENWWNWNNEES(W|ENNNNE(ESESWW(SSEE(N(E(NNEEESE(SWWWNE|NN)|S)|W)|SSWSSW(NNN(E|WW)|SWW(NEWS|)SSEESWWWW(WNWN(N|EEE(SWEN|)N)|SEEES(ENE(NNN(NEEES(WW|E(ES(ES(W|ENEEES(WWSEWNEE|)EE(NWES|)S)|WW)|N))|WW)|S)|WWWSESWSWSESES(WWWN(E|N)|E(SWSNEN|)NNWNENNES(NWSSWSNENNES|))))))|N)|NNN(ENSW|)WSWWN(WSSESE(NEWS|)SSWNWW(NEWS|)S(SSSSWW(SEEENSWWWN|)W(N|WWW)|E|W)|E)))))|S))|NN)|NNNE(NNWSNESS|)SEEESWW(W|S)))))))|NNNNENNESE(SWSWENEN|)NNWNENES(ENNEENWWNNWWSESWS(WNNWW(SSSE(E|NN|SSW(N|SS))|NEENNNWW(SSENSWNN|)NENWN(EESSE(SSEES(ESSENSWNNW|)WW|NNN)|NNN))|E)|S))))|N))))))|SWS(WNWESE|)E))|SSENESENE(NWWEES|)SS(WW(WWWWSS|SESWSESWS(NENWNEWSESWS|))|EE(N(ESNW|)W|S)))|E)|EE)|NWSWWN(WSNE|)ENNEESW(ENWWSSNNEESW|)))|E))|EESWSESEESE(SSW(WSEEWWNE|)N|NEEN(ESNW|)WWWNN(WSSNNE|)EEESWW))|SESS(EN|WN))|ENEEE(N(NNEENNWSWNWNENNESEES(SSSSWWSEEENNEENWNNN(W(NNNWNWSSESW(ENWNNEWSSESW|)|SSS)|ESE(N|S(SSEE(NWNSES|)SSWWN(WWSEWNEE|)E|W)))|WW)|W)|S))|EEEESW))|E)|S)))))))|E))))|SWWNNN))|EEN(WNSE|)ESENNN))|E)|E(NNWESS|)E))|EESWSSE(NEEN(ESESNWNW|)W|S))))))))|N))))))))|N(N|E))|E)|WW))|W)|S)))|S(SS|E))))|SE(SWEN|)N)|S))))|EE(N|SEEN(ESNW|)W)))|W)|N))|ESSSE(NNNN|EE))|N)|NWWN(WSNE|)NNEE(NWWEES|)SS(WNSE|)EEE))))))|E)|ESEENN(WSNE|)NNEESW)|E))|ESEE(NWES|)S)|NNNE(SS|N))|NNNENESESWWSEE(WWNEENSWWSEE|))|ESE(SSW(N|S(E|S(WW|S)))|NEEEE(ESWW|NWWNN))))|E)))))|W)|W))|W)|S))|WW)))|WNNNE(S|N(WW(WNNNWNW(NNNWNNNNEN(WWSSSWWNWW(NNESEE(NWN(W|E)|S)|SES(ESESE(NNWESS|)E|WW(W|N)))|ESSWSSE(NEE(S(ENSW|)W|NWNNNNNNN(W|E(S|NN(WSNE|)N)))|S))|SSSWSE(ENNSSW|)SSSWNNWWN(WSSEESWWWSWNN(E|WSWSWNWWSESSESE(SWWNWNNWNNWSSWWNNE(N(E|WNWWNWWNWW(NNESENN(NESSSE(SW|NE)|W)|SESWSESEEEN(WNWSNESE|)ESSWSESWWNNWWWSESE(N|SESSENNESESSEENWNEE(NNWSWWNE(WSEENEWSWWNE|)|SSEE(SWSSWWSESE(SSSSWNWNENWNWNNNN(EESWENWW|)WWSSE(SSSSWWNENNWNWSWNWWSSSEN(EE(SWSESWWS(WWNWNE(E(S|E)|NNWNWWSES(E|SSWS(EE|SWSSSWSSS(EE(NWNSES|)E|WWNNE(S|NWWWSSWNWWNNENWNWWSESWW(SEESS(WNSE|)ES(E(N|EEE(SSENESS(SSE(NN|E)|WW)|NN))|W)|NWWWNENESENENENNESSEENWNEENWWWNENWNNEN(WWSSSWNW(N(ENWESW|)W|SSES(ENSW|)WWWWN(WSWWW(NEEWWS|)WSS(SE(SWEN|)EENN(WSWNSENE|)EESS(ENEN(ES(SW|EN)|W)|W(S(E|SSS)|N))|WNNW(SS|NN))|EE))|EESWS(EEEEESWSWW(WWNEEE|SESWSESSSSWNWN(WS(WNWWEESE|)SS(SWEN|)E(N|EEENE(S|NWNENE(NN(ESNW|)NN(WSSSW(NN|S)|NENWNNWSWNNNWW(S(WN|ESWSE)|NEN(W|ESENEEENWWNNN(EESEE(E|SSSW(NNWWNSEESS|)SWWSS(WN(WSNE|)N|ESEEESWWW(WNSE|)SSENE(SS|EENNE(NWWNW(SWNWESEN|)NE(ESEWNW|)N|SEE(SWWEEN|)N(ENSW|)W))))|WSW(SSENSWNN|)N))))|S)))|N(ESNW|)N))|W))))))))|EEEEN(ESS(WWW(SEWN|)W|EN(ESSEE(N(EE|W)|SWWS(WNNSSE|)SE(N|S))|NNN))|W))|E)|N)|N)|N)|N(WNSE|)EE)))))|S)|ENN(EESWENWW|)(N|W(W|S))))|E))|S)|N)))|WNWSWWNNWWNNWSSW(NWWNNEE(SWEN|)EEENE(N|ESWSS(WNSE|)E(N|S(E|S)))|SEES(WW|SE(NN|SE(NEWS|)SWSWS(E|WNN(ENSW|)WSSW(WWNEENWW(NN|WWS(WN|ESS))|SS))))))|N)|N))|N))|SW(SS|WNENWWSWNNNNEEES(WS(WNSE|)E|EN(NWNWSWWWSWSESSW(SS(E(EE|S|N)|W)|NWNNW(S|WWNENEEE(SWWEEN|)ENWNNNEN(W|ESESSEEE(E|S(S|WWWW(NNWS|SE))))))|ESE(E|N)))))))|EE)))|NN)|EE))|S)|E))|E))))|E)|WWWWS(WNSE|)E)|WW))|W))|EN(W|EE(N|S(W|SE(SWSEWNEN|)N))))))|N)|N)))|ESENEES(SES(WSEWNE|)E|W))|W)$`,
"google": `^WSWWNNNNENWWSWWNENNENWNWWWNEENNNWWWNEENWNWSWSWWNENENENNWNWWWSESS(EN(E|N)|WWSWWSSESWWNWSSESWWWNNWWSESSSSWSSSSWWSSSWWSSSESEESEENWNWWNEEESESSSSEEENNNWSSWNNNNWNWWW(WWSNEE|)NNESEEEES(W|EESS(WNWSNESE|)SEESEENWNNEEEENNWNWWWWWS(WWNENNNESENESEES(EENWNNEES(W|E(NNN(ESSNNW|)WSWNNWWWWSSS(WWWWSWNNWW(NEENEN(WWWSEWNEEE|)ESSWSEENE(NWNNN(WSNE|)EEN(EEESES(ENESNWSW|)SWNWNWSS(WNWSNESE|)E|NW(S|N(ENEWSW|)W))|S)|SSE(SWSS(WN(NNNN|WW)|ENE(ENWESW|)S)|N))|ESENNN(WS|ES))|SWSEESWW(SSENEEE(NNWSNESS|)SWSEESSSWWWWWNWSWSSEEEN(ESSSWWN(E|WWSWWNNWSSSEESESEESSEEENNNN(NEESEENWNNESEESWSESSSSESENEESENEEESSWW(NEWS|)SWNWW(N|WSWNWNWNNNWWSSSE(NN|SESWSSWNNNWNW(WWWWWWSEESESEESSWSSSSSEENWNEEENNWW(NNE(NNW(NWSWNW|S)|SEEENEEEEN(NESSEESSENESEESSESSSWSWNNENWWWSWSWSESSWNWNWSSESSSSSSWNNWNNE(NWNNNNENNWNENNN(EESWSSSS(ENNE(N(EEESWW|W)|S)|S)|WWWSSE(NESNWS|)SWSSSSE(NN(N|E)|SSSSSWSESSE(SWWNNWWSWNWSWWSWWNNNENNWWWSE(SSWNWNWSSWWSSSSENNEN(W|E(N|EESSESESENN(W|ENEESENE(SSSESENENEEEENNEENNWSWW(NENWNNEN(ENEN(WNEN(W|N)|EEENESENENWNNNEENNNWSSWW(SSSS|WNENNWWNNW(WWS(SENESSEE(WWNNWSNESSEE|)|WW)|NEESSENNESSS(EEEESSEESWWSEESWWW(SSSSW(WSWSESESESWSSESWSWNNNWSSSSSSESWWNNNWWNW(SSSSESE(NNWNEWSESS|)SWSWWWSESSEEENEES(W|EEEEENESENNENWNENEENWNWNWSS(E|SWNWNENWNNNW(NN(W|ESENNWWNNWNN(WSNE|)EENESENNEEENNWWNNW(SSS(WSWNW(NEEWWS|)SS|EE)|NENNNESEENWNENWWNNNNNWWNWNEESEEENNNESESSESEENESSSSENNENWNNENNENENENESSWSESWW(N|WSS(W|SENEN(W|EESSW(SSWWW(NEENSWWS|)WSSSEENN(WSNE|)ESSENNEESESWSSSESSENNNEESESENNESE(NNNWNENNNWSWS(SWNWWSESWS(W(WSNE|)NNNWNNEEES(WW|ENNE(NNWSWNWNEENNWSWNWNWWNW(NWWWNEEENNNESSSSEES(ESEENWNWNWWNNEES(W|ESEES(EE(SSSWW(NENWESWS|)SES(SSE(SWEN|)NNN|W)|NNNNNNNNNNNWNWNWSWWSSWWSSWSESS(WWWNE(E|NNNNE(NNWWWWSSWNNNNEENNWSWNWNENEEES(WW|SESWSES(WWW|ENENEENESS(SWNWSWSSEN(SWNNENSWSSEN|)|EENENE(NWWSW(NNNWNWSWNWNENWNWNWNWWNWNNENWNNNNWWNEENESSEESWSESSW(NWNNSSES|)SEESWW(SEESEENNNNNWS(SSS|WNNENNESSENEEESSSSEE(NWNNE(S|NWNNWNEE(SS|NWWNWSSWWNENNNNNWSWSESWWSWNWWSWS(WNNWWNWWNWSSWWSSSENEN(ENESEESWWS(W(SSWWSWWWNNNE(NWNENWNWNWSWNNWWWWNNNEEENENNESENENWWNNWNWSWWNNE(S|NENWNWSSWSWNNWSWNNEEN(WWWWWSWNWSSEESWWWWWSWWSSEESWSESESWSESEENESENNEESWSSEEN(NEE(NWNW(NENWNEESSSEEEE(NN(ESNW|)WWS(E|WNNNWWNWSWSSWNNN(WSWNWWWS(SENESEESSWWN(WWSESS(ENE(EEENWESWWW|)S|S)|E)|WW)|ENWNENW(ESWSESNWNENW|)))|SWWWSEE(WWNEEEWWWSEE|))|S)|SSSW(NN|WSSSWSWSWSESSSSSWNWNENNWWS(SWWNWSSSSSWNNNNWNWWNWWNEEEEENNNENESSSW(N|SS(EE(N(W|EENWWNNESEENWNWNEESE(ENNW(WNWWS(WNWSWWNENWNWSSWWNENNNNE(SESWENWN|)NWWWNWWWWWWWSWWWWWWSSWWWNWWWWSESWSEENE(NWES|)ESESSESWSEESSWNWWSSSWWSWNWNEENE(S|NNWSWNNEEE(S|NNW(N|SWWN(WSSSWSS(WSWWNENWNNWNWWNWWNEENESES(W|ENNWNWWWNWNWSSWWNENNWWNEENESENEENNENEN(WWWS(E|WWWWSS(WS(E|WNNENWN(WWSESSSWSSWNWSWSESENEEE(NNWSNESS|)SE(NEWS|)SSSWWWSSEEN(EENNESE(NE(N|E)|SWSWWSWSSWSWNNN(ESNW|)WSWNNENWWSWNWWSESWWNNWWWNEENNWSWNWSSSWWWSWSESWWSSWWW(SSESSW(N|SEENEENESESWSSSSWNWSWSWSSW(SEENEESWSWSESWWSW(NNNESNWSSS|)SSSENNEESESESEENENEEEENESSWWWSW(WSWSWWSSWWWSSWSW(NNNE(NENNWSW(NNEEE(NWNSES|)SE(SSWNSENN|)(N|EE)|S)|S)|SESENNENNEEEESENESEEEENESSWSEEENWNEESEESWSW(N|SWNWSWNWWSESEEESEESENNN(WSWENE|)NESSSSSWSESSSWSESSWNWWSWNWSSEESEEEEEEENESSESWWWN(E|WWWSWWN(E|WWSESESWWNWSSWSWWNENENNNN(E(SS|E)|NWWNWSWSWWSSSWSEEESSE(NNNWWNEN(W|ENEESWS(S(ENSW|)S|W))|SESSWNWSWNWWNNWSSSWSSWWNENWWWSESWSSW(NNNNNEEEEENNWNNESE(EEESWSEE(WWNENWESWSEE|)|NNNNNNWNENWWSWWWW(SESEEE(NWWEES|)ESWWSES(ENSW|)WSSSS(WWWNNESENNNNWW(SSENSWNN|)N(EE|N)|E)|NNNNEESWSES(ENENESEEENWNW(S|WWNEEENNNNEESSSESWS(WNNNNSSSSE|)SSES(WS(WW(NEWS|)S(EE|SSS)|E)|ENESEE(SWEN|)NNNWWS(ESNW|)WWNENEENENWWNEEE(NWWWWSW(SESEWNWN|)NNNNE(SSEWNN|)NWN(EESNWW|)WSWWN(E|WNWSSESWWSEES(EENWNEESS(NNWWSEWNEESS|)|SSWSESWWNWNWSSES(SS|WWNW(NENNEEE(ENWWN(NNENNSSWSS|)WSWNW(SSS|N)|S)|S))))|EESSSWSEE(ENWNNSSESW|)SWWW(SEEEWWWN|)NN(NNESNWSS|)W)))|W)))|SSSEEEENWNNEES(ESSENEEESWWSESSWWN(WWSWWNWN(EE(E(NN|EE)|S)|WSW(SESE(N|SWSESSSSENEESWSEEEESEENWNENWNEENWNNESENEESWSWSSSSSW(NNN|SESWSWWWSWSSSSSS(WWWNWNWSWW(SEEEWWWN|)NNNENWNNENWNENEN(WNW(NENWN(NNN|E)|SS)|ESSSSSESSWW(S(WSNE|)EEES(W|SENNNNW(NNNNN(WSSSNNNE|)ESSE(SWSNEN|)N(ESENES|N)|S))|N(N(W|NNN)|E)))|EENWNENENNN(EENESSWWSSSSENNNEESWSESWS(WWWNNSSEEE|)EENESEENEENESS(WW|EEEEENNESENNWNNESESSSS(WW|ENESENENNENESENNNNNESSEESWSESWW(NN|SWWSEES(WWW(W|NN)|EENEN(WWSNEE|)ENEENWWW(S|NNESEENESENN(ESSSEENNN(WSSNNE|)NNE(ESSE(NN|ESEEEESWSESSEENE(NEEENWWWWW(NENWW(W|NEEESES(ENNNNWSS(NNESSSNNNWSS|)|W))|S(E|S))|SSESWWWWN(WWS(WWNENEN(ESNW|)WWWS(WNW(SWNWWWNWSSESENESEES(EENWESWW|)WWWWWNWW(NEWS|)S(W(W|N)|E)|NEEN(EES(ENSW|)W|NWW(SEWN|)NN))|E)|E)|EE)))|N)|NWWWW(S(WNWSWNNWNNNE(NNWNWSS(E|SWWNNWSWSWSEE(N|EESWSE(ENNSSW|)SWSWSEE(N|SWWSWSWS(WNNNE(NE(NWWSW(S|WNNE(NEES(W|ENN(ESSNNW|)WWWNNWWSSWNWSWSWNNNWSSSSEEESWSEE(ENNW(S|N(EENNSSWW|)W)|SSWS(E|WWSW(NWWWWNENEES(ENE(SENEWSWN|)NNWWNNNNWWNWNENESE(SWEN|)EEENWNEENWWWWWS(ESENSWNW|)WNNENWWWWNNWWNENESESSEEEESSEENWNEESENNENESSSW(S(WW|EEESSWNWSW(N|SS(SW(WSNE|)NN|EEN(W|EES(SS|W|ENNWNENEENESSS(WNWSSNNESE|)E(SS|NEENWNNW(NWWNENWWSWWSWSS(WNNNNWNWNEEES(W|EE(SWWSNEEN|)NNNEESENENWNENWWSSWNNNWSSSWWSS(E(S|N)|WNNWWWNNESEEEENNWNEEEEEEEESW(WWW|SSESESWSW(WSEEEESSSEEEENEE(SESEEN(W|ESSEENNW(S|NEE(NW(WWSNEE|)NNE(NWES|)S|SSSESSSWWSS(ENSW|)WNNNEENWWWWWN(WSWS(EESEE(NWES|)SWWSS(WS|ENE)|WWNNE(N(ESNW|)(WWSWNWWSESWSW(SSEE(SWEN|)N(W|EN(W|E(NWES|)S))|NNNNWW(SESSNNWN|)NEENWWW(WWN(E|W(N|S))|SS))|N)|S))|E))))|NNNNNN(E|WWN(WWN(NWSWNW(NWNNNESES(ENE(S(SWW|ENES)|NWNW(WWWSSSSWWNWSWWWWNWWWWNEEN(WWWSWNWSSEESESWS(WSWNNENWWWWWWSWN(NEEEEENWWNEENE(WSWWSEWNEENE|)|WSSWNWSSESSWNWSWNWWSWNW(NEWS|)WSS(SEEN(WNSE|)ESEEN(WNSE|)EEESSS(EENESEENWNWWNEEESEENWNNE(NNWSWNW(NEEEWWWS|)WWSSW(S(SSS|EENE(SEN|NW))|N)|SESSENNN(W|E(N|SSES(EENWESWW|)SW(N|WWWWSESWSWNW(W|SSEEEEENW(W|NEEN(ES(SWSNEN|)E|WW)))))))|SWWSSWN(NNEN(NESSNNWS|)WWWWW|WSSES(WWSSSWNNNWW(SESWSESSE(N|SWWNNWWWNNEE(SWEN|)NWWNEE)|N)|EEEN(ESSSSSSENNNESE(NNWWEESS|)SWSSSESSESE(NNWESS|)SWWWSS(WNNNE(E|NNWNWWSW(SES(W|E(N(E|N)|SWSSE(SSEE(NWES|)S(EE|S|WW)|N)))|NNNE(SEEWWN|)N(N|W)))|ENEEEE)|W(W|NN)))))|WWWWSSSWN(SENNNEWSSSWN|)))|EENNEESWSSE(E|N))|NESSEESENE(NNWNNN(WNN(ESNW|)WSWNNWSSW(SES(W|ENESESSS(WNNWWEESSE|)E)|WWNNWSSWNW(NENNESENNWWNNW(NENNNNNESESSSW(NN|SESS(WNSE|)E(SSSSE(SWEN|)N|NNNNEE(SSWNSENN|)NEENNNNNE(NWNNWWNNNNNWSSSWWSEESWWWNNNENNNWSSWNNNNEEEESW(S(EEENESSSEESWSS(WWNN(ESNW|)NN|EEE(NNNNNESENENNNWWWSWS(EEENWESWWW|)SS(SSSWENNN|)WNNW(SS|NENNNNESS(S|ENNESSEENNW(S|NENNNNWSWNWSWNWSWNNWSWSSE(EEESS(WNWSWNWWSESWSESWS(WWNNWNNEE(S(SS|W)|NNNE(S|NWNNWNNWNWNNW(SWSSWSSEESWSWWWSEESSWWSWSESSENNESENN(WW|ESE(SSW(N|WS(EEENSWWW|)SWN(WSWSWNWWNENWWSWWWSEEESEESWW(SESWSEENEEEEE(SWWWSW(SSEESSSW(SEENEENWWNNNN(WSWENE|)EE(SSW(SEESSSEESS(EES(WSWNSENE|)ENNNNWNN(ESNW|)WWWSSEE(NW|SESW)|WNWWW(NEWS|)WSESSSS(NNNNWNSESSSS|))|N)|N)|WWNW(NNNE(NWWWSSE(SSWWWS(WNNENE(SEWN|)NW(NEWS|)WWS(WSWS(EEN|WN)|E)|E)|N)|SSESEN)|S))|N)|NWNW(NEESNWWS|)WS(E|W(N|W)))|WNWSWNWNNWWWWNENNWW(S(SSSSW(NN|S(SESE(ENWN(NNEESS(WNSE|)E(S(E(E|N)|W)|NN)|W)|S)|WW))|E)|WN(WSWENE|)EEENWNNEENW(NENNNNNNENNN(WSSWSSWWN(ENNNES|WSSS(WW(SEWN|)N(E|W)|EEN(ESS(W|S)|W)))|ESE(SWSEESSSSESEEEENESE(S(E|WWWSSE(S(SWNWSWSWWNWNNNNN(WNENNWSW(NNEEWWSS|)SSSSSSE(NNN|SWSSSENNESESWS(EENEEN(E(SESSE|NW)|WW)|WWWNNNNNW(ESSSSSNNNNNW|)))|ESSSENNESE(SWSW(S|W)|N))|EE)|N))|NNWWNNN(ESSEEWWNNW|)WWSWW(SES(ES(ENN(W|N)|W)|W)|NEN(EENWESWW|)WW))|N))|W)))|N))|NNNWN(WSSEWNNE|)EN(ESSSENNNNWWNN(ESNW|)W(N(E|N)|W)|W)))|NENEEESWWSEEEENN(ESSSE(SWWNWSSW(SEENEEESENEE(SWSEE(S(EESSENENNW(NEENN(EESESESENNWNEENENEEEENESESESS(ENNNNESSSENE(SSWWEENN|)NEN(EEESNWWW|)WW(S|N(E|WWWS(WNNWSWNWWNEEENEENWNEN(WN(WWWWSESSS(ENNE(NWES|)S|WNNWWSESWSWSSS(SWWS(E|W(NNNWNNNESSENE(SSWSEWNENN|)NWNW(NNEES(SE(NNEEWWSS|)S|W)|WW(SS|W))|S))|ENNE(SSEENW|N)))|E)|EESSW(N|S(SSWNWESENN|)E))|S)))|WNWNWSSWSESEN(ESSWSWNWNWSWNNWW(NEEN(W|E(ENWWEESW|)SS)|SSWSWSWWWNENN(W(WS(SSSSSSSEESEENWNWWNNEES(W|EEEENWWWN(EEN(NE(NN|ESWSESSSSWNWSSSENEENEEESSENNEEESWSSSESENNESSENEEEENNEESWSSEESENESSWSWSWNN(E|NWWNWWWSWWSSSWWWSWSSWSEENNESSSEENWNENN(W(S|W)|ENEESSW(SW(N|SESWSWWSSENEEEESSWWSEESESSENESEENNNNNENNNNENNWSWSSWWWSESSWW(SEEE(NNENWESWSS|)SWS(WNW|ES)|N(E|NWW(W|NEENWWNENESEENE(SSWWEENN|)EN(NESENENNW(SWEN|)NNEES(SSENNNNWWWNENEES(EESSSEEESSENNNNWNENNWNNESEESWSESEESEEEESESWSS(WNWSWNNN(ESENSWNW|)WSSSWWSW(SESSWSESSENNNEESEN(ESSSSWWW(SSESSWWSSWSSEEENENN(NEENEES(SW(N|WSEESESWS(WWSSS(WS(WS(E|SWWSS(ENEWSW|)W(NW(S|NWNNESE(NEE(SWEN|)NNWSWNNN(EEEE(N(W|N(ESENSWNW|)NN)|SW(WW|S(E|S)))|WWWWSSWNWNWSSSE(SWSEE(EENWN(WSNE|)EEENWN(WSNE|)E|SSW(SEWN|)NWWNWNNE(S|NNNNWSSSWSWWNWSSSSESWSWNNNNWNWNWWWSSSSSESEESWSEESSWWWN(W(SSEEEEEEENWNEEEE(SSWNWSSWSES(WWWNENW(ESWSEEWWNENW|)|ESSENNE(E(NNW(WWSEEWWNEE|)NNE(NWES|)S|E)|SSS))|NWWNW(NEE(S|NE(EE|NWW(S|NN(ES|WS))))|WS(E|W(SS|NWNNNNWWW(NNESE|SESEN)))))|NN(ESNW|)WWSWNWNNWSWNWNENWW(SSSSSES(W|EEE(EEENSWWW|)NWNW(WNSE|)S)|WNENENWNNNNNW(SSSSSWWNW(NEE(N|S)|SSES(WWSSWWNENW(ESWSEEWWNENW|)|E(NEWS|)S))|NENENWNENNWWNN(ESE(N|ESSSEEE(NEEWWS|)SSEESESWWNWWSESSWNWNNNN(ESNW|)WSSWSSSE(NN|ESSEEEE(SSWSSWNNWN(EE|WSW(NNNWSNESSS|)S(ESSE(NN|EEE(NN|SS(WNWSNESE|)E))|W))|NESEENEENWN(EESEENESE(SWS(WNWSW(N|W(SESNWN|)W)|E|S)|NNWNENWNENWNW(NNNEENNNN(WSSSNNNE|)NESENENWN(EEESWSSWSSWNWSSESSW(WS(WNSE|)SENEENNNESEEE(SSE(NN|SWWWW(NNEESW|WWSWSSSEESS(WNWSNESE|)SENEENESS(WWSNEE|)ENNNNE(S|NWN(EE(SE|NWNE)|WSWWN(WWSWSEE(N|SSENNESEN(SWNWSSNNESEN|))|E)))))|NWNEN(WNENWWSSS(WNSE|)S|E))|N)|NNN)|SWSESSSW(S|NN)))|WSW(WWW(NEEE|SWW)|S)))))|WSSSSW(WNNE(S|NWNWNNWSW(SESESSSW(ENNNWNSESSSW|)|NNENNNNNNWWWW(SSENEESSSSWNN(W|N)|NWNN(EE(NNNWESSS|)S(W|ES(W|EEN(EESWSESWSSSSENENN(WSNE|)NNNEN(ESSE(ESWSS(SWSW(S(E|SSW(WNN(E(N|S)|W)|S))|NNENWN(E|N))|ENESENNW(ESSWNWESENNW|))|NNNN)|WNNWSWW(EENESSNNWSWW|))|W)))|WSWWWNN(ESENSWNW|)NNNNN(WWSSE(N|SWSSE(SWSESSS(W(NN|SW(WWSESW|N))|E)|N))|N)))))|SSE(EN(NNEWSS|)W|SSWNWSS(NNESENSWNWSS|)))))))|EE)))|N))|S))|S))|E)|E)|E))|ENNW(WWWW(SEWN|)N(E|W)|NEN(W|E)))|WWS(SWEN|)E)|NEN(WN|ES))|NWNWW(SEWN|)NEEE(E|S))|NNENWNEN(WN|ESSS))|ENENNNE(NWW(WN(E|NNNNNWNENWW(NN|WWSEESSWSWW(SSENESS(WW|ES(ENNNN(WSSNNE|)N|W))|NEN(WNWSWS(ESWENW|)WWNEN(WNNWWWNEEENWWWNWWNENNE(SES(W|EE(NW|SWW))|NWWSWS(WNW(NNESEWNWSS|)SWSWSSENENEESSSWSWWN(ENENSWSW|)WSSEEESSWWN(WSWWWWWW(SSESWWWN(E|WW(WWWWWWNEEENNNN(WSWSS(ENSW|)WNNWSW(NNEWSS|)SSSENN|E(NWES|)SEE(NWES|)SE(SWS(E|WWNENW)|N))|SSS(WSNE|)EN(N|ESSENESENN(EEENWWNEN(WW|ESEEEN(EEEENWNENE(SSEENN(WSNE|)ESSSWWSW(SEESWW(WWWWWN(ENEES(ENSW|)W|WSSSE(NEWS|)SWW(NNNN|W))|SEESE(SWSEEWWNEN|)N(NNNWESSS|)E)|N)|NW(NNES|WS))|WW))|WW))))|NNESE(N|E))|E)|E))|E)|E))))|S)|ESWSEE(SWS(SEE(NWES|)SW(S(EENEN(ESNW|)W|S)|W)|W(W|N))|N)))|W)|W)|WWW(WWNNWWN(WSNE|)EE(NWES|)ESE(SWEN|)N|S))))))|N))))|W)|WWW))|E)|N(E|N))|ES(E|S)))|N))|N)|S|WW)|WWWWN(WNWSWSWN(SENENEWSWSWN|)|E))|N)|N)|NWN(E|W))|NN)|W(NWWEES|)S))))|EE(SWWSNEEN|)ENWNENW(ESWSESNWNENW|))|EENN(WS|ES))|N))))|SS))|SSS)|WW)|S)))|SSSS)|SS(WWWNSEEE|)EE))|EESWSESSES(E(NNNEEENWNENWN(W(NEWS|)SSSWW(NEWS|)SS|EEEE(SS|NNN(E(S|EEEE(S(ENESNWSW|)W|N(WW|N)))|W)))|S)|W))|S))|S))|W)|SS(W|EESW(W|SESS(W(N|W)|EENWNE(NWES|)EESSSSWN(WWSESWWNN(SSEENWESWWNN|)|NN)))))|EE)|E)))|NN))))|E(EN(NES(EE|S)|W)|S))|SS)))))))|N)|W)|SEENES))))|S))|S)|S)|E))))|SS)|E(EE|S))|NEN(E(SE|NW)|W))))))))|WSSW(S|N)))))|N))|E)|W))))))))|N)|NNNENWNEE(N(ENESSW|WW)|S)))|NENWNNNNENENNESSSE(SWW(WSSE(ENWESW|)SS|N)|EENE(NNWNNEENWNWWS(E|SSSS(E|SWNNNWNNWSWW(NNNENESS(WSNE|)ENNNEEN(ESEESEESESWW(WN(WNWSWW(NEWS|)SSS|E)|SEESSENENESSSSSWNN(W(SSSEEENNE(NWNNNNE(S|NWWNWW(NN(EEEEEESWWS(WNWWEESE|)EES(EN|WSE)|WWW(SEESNWWN|)WW)|SES(WSNE|)E))|EEES(WWWSEE|EN(ES|NW)))|WWNNWSSWNW(ESENNEWSSWNW|))|N))|WWWWS(W(S|N)|E))|SSS(ENNEWSSW|)S)))|S))))|W)|EEEEE))|ENEEESWW(EENWWWEEESWW|)))|EEEEEESSWNWSWNWWSESSWNW(WSESWSSS(WNNNWS(WW|S)|EESENENWWN(WSNE|)NEENNEESWSS(WW|S(SSWSSW(SESW(W|SSE(NENNNN|S))|N)|EEENWWNENNEENENEN(EESEESWWSSENEESEES(SWNWSWWWWWWNEE(EEENSWWW|)NWW(NENE(N|S)|WS(WNSE|)SSEESEN(SWNWWNSEESEN|))|ENESEENEENESS(WW|EENE(SSWENN|)NEENWWNN(ESENESEE(NW|SWW)|WWSS(WNWWS(E|WS(E|W(S|NWNEN(WWWWSESE(N|S(E|WWNWNNWW(EESSESNWNNWW|)))|E(S|EEE)))))|S(ENNSSW|)S))))|WWSW(N|S)))))|N)))|E(N|E))|E))))|E)|S)|S))|S)|W(WW|S)))|E)))|W)|E(SS|EEESEESWSS(ENESESW(SES(EEEEEESESESWWNWWWWW(NEEEEWWWWS|)SSSWWW(NEENSWWS|)WSWWS(WNSE|)EEENEESENESEES(EENESENENEEENEESWSSSS(ENNNE(ENNEEENWWWW(NNESEEEENNNWWWS(SENESNWSWN|)WNWNENEEEES(E(SSSSSSW(SWWS(WNSE|)ESWSEENNE(SSSSW(NWWSE|SE)|N)|N)|NNNWWS(WWNNWWSWSWWSSSWSEENNNE(ENENSWSW|)SSS(SSSWWNN(ESNW|)WSWSW(NNENNNWWNWNEESENE(SS|NWWNEEESENNWN(WWWWWWSESS(WWSWSS(ENE(N|SESESEN(SWNWNWESESEN|))|WNWW(SEWN|)NEENENE(NWN(WWWSWW(SESEEN(ENWESW|)W|N(E|WW))|E)|E))|ENNEEE)|EEEES(WWSNEE|)ENEEESWWS(EEENNSSWWW|)S))|S(EENSWW|)WWN(WWNWWSESW(WNNSSE|)SEE(E(NWES|)EE|S)|E))|E)|E))|WWW)|SS)|S)|WWW(S|WWN(ENENEESWS(E|W)|WW)))|WWWW(SESEENW(ESWWNWESEENW|)|W(N|W)))|W)|W)|W))))|SE(EEN|SW))|N)|EE)|W)|ESSEE(SS|ENN(WW(SEWN|)N|E(NEWS|)SSESENESE(WNWSWNSENESE|))))))|SWWSEESSWNWSWNWSSW(SSENEEESSSS(WNNWNE|ENNNNNWWW(EEESSSNNNWWW|))|WN(W|ENNENWNNNESSE(NNNWESSS|)SS))))|W)|S)|SSS(WNSE|)S))))|S))|SEEENESESE(S(WWNWESEE|)S|NNNW(WWNNN(NNEESWSEE(SSWWNE|N)|WWSSSSENNN(SSSWNNSSENNN|))|S))))|W))|W)|SSSSENE(NWES|)ESSW(SS(W(SSWNSENN|)NN|EE(NWES|)E)|N))|S))|EE(S|E(NWES|)E))|E)|SWSWWWW(N(N|E)|SESSSEENENE(N(WWWS(S|E)|N)|SSWSESWWNWWSESWWNNWWSESWSWSESWSEEESSSSSSWWSESWSWNNNWWNNEES(W|ENNWWWNWNWWSWNWSWSWSWNWSSWNWWSESSSW(SSSSSWS(WN(WSNE|)NENNWS|EENNNEESWSEES(WW|EEEEENNNESSENESENESES(EEENWWNEEENEESSW(WSEEENNNNWWWNENNWW(NNNENEEE(SSWNWSWSEEESSSWNN(SSENNNSSSWNN|)|NWNNWWSW(S(EENSWW|)S|NNWWNNESENESEEE(NWN(WSNE|)E|S(SS|WWW))))|WSE(E|SWWSWWS(E(EEENWESWWW|)S|WNWNNE(S|NWWNWWNWSWWN(NE(EEEN(ESSWENNW|)(WWW|N)|S)|WSW(N|SEESSSSSES(WWNWNENNWSWWN(WSNE|)NE(NWNEWSES|)(EE|S)|ENNWNNNNESENESESWS(WNWS|ESE))))))))|N)|WWWWW)))|NNW(NNNENWNENNWSWSSSWSES(S|WWWNNE(NNE(NWNNWW(SEWN|)N(W|EEENEN(ESESWS(EESESSS(SWNNNSSSEN|)ENENENNNWWNNEES(W|EEESWSSS(EENENENNWNW(SS(SWSNEN|)E|NWWS(E|WNNNNENNEENWWNEENN(WSWNNNWWWWNEENWWWWSWS(EE(SWSSESEESENNE(NNWWWS(SENEWSWN|)W|SSSWS(WSSSE(NN|SWWNWSSW(WNENNENE(S|NN(E|WSWSW(WWNEENN(WWSEWNEE|)E(N|S|EE)|SS)))|SSE(N|SEESWS)))|E))|N)|WNNNE(N(W|E(NN|SE(EEE|N)))|S))|ESENEE(NN|SSSSE(SSESWWWSEE(SSSWW(SESWSWS(W|EE(S(W|SENESE(SSS|N))|N))|NN(ESNW|)W(S|NW(S|NWSWWNENNESENES(S|EN(ESNW|)NWNEN(WWSSNNEE|)N))))|EEENNW(NWES|)S)|N)))))|W(SWSWENEN|)NNN))|W(SWNSEN|)N)|W))|S)|S))|S))))))|N))))))|SWSWS(WNSE|)SSEE(NWNENSWSES|)SWWWSEEESEE(NWNSES|)SWWWWN(WS(SEEEWWWN|)WNNW(NEWS|)SSW(WSWNSENE|)N|E))))|NEEE(SWEN|)NWNENEN(ESNW|)WWSWNNNESE(E|NNWWWSSSS(SSENSWNN|)WNW(NENSWS|)(S|W)))|NNNWNE)|NNNN)|SS))))|W)|SSWNWSWWSWN(SENEENSWWSWN|))|N))))|E)|N)))|S)|WWW(N|W)))|S(WNSE|)E)|NENNN(W(N|SS)|EEE))))|WSSSWNNWWN(N|EE|W)))|WW)|W)))|WWWW)|SE(SSWNSENN|)EEN(ESEWNW|)WW)))$`,
}