--- /dev/null
+The program in this directory extract information about how the pthread rwlocks
+of a platform are implemented.
+
+1) foo.c is a program that shows in which order the waiting threads get granted
+ access to the lock.
+
+ Compilation instructions are at the end of the file.
+
+ foo.sh is equivalent to "./foo 5".
+
+2) outputs/ contains the output of "./foo 5" on various platforms. Each
+ invocation has been done at least twice, so as to determine the degree
+ of randomness in the output.
+
+3) rwlock-analyze.sh is a program that analyzes one of the "./foo 5" outputs and
+ produces a textual description of how the pthread rwlocks work.
+
+4) results/ contains the results of rwlock-analyze.sh for each of the platforms.
+
+5) results.txt summarizes these results in a single file (copy&pasted).
--- /dev/null
+/* Shows an implementation's wait queue handling of POSIX rwlocks.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published
+ by the Free Software Foundation, either version 3 of the License,
+ or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* This program shows the wait queue handling of POSIX rwlocks.
+
+ The program has a single pthread_rwlock_t.
+
+ The function do_test takes as argument a string consisting of Rs and Ws,
+ for example RWRRW. It launches a corresponding number of threads:
+ For each R, a thread that attempts to lock the lock for reading;
+ for each W, a thread that attempts to lock the lock for writing.
+ The threads do this lock attempt one after the other.
+ The first thread keeps the lock until after all threads have issued their
+ requests, then releases it. The interesting part is, then, in which order
+ these lock attempts are granted.
+
+ The main() function can be invoked
+ - either with such an R-W-string as argument. It then performs one do_test
+ invocation.
+ - or with a number, for example 5. It then performs do_test calls for all
+ possible R-W-strings of that length. */
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define STEP_INTERVAL 100000 /* microseconds */
+
+static pthread_rwlock_t lock;
+
+struct locals { const char *name; unsigned int wait_before; unsigned int wait_after; };
+
+static void *
+reader_func (void *arg)
+{
+ struct locals *l = arg;
+ int err;
+
+ if (l->wait_before > 0)
+ usleep (l->wait_before);
+ err = pthread_rwlock_rdlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_rdlock failed, error = %d\n", err);
+ abort ();
+ }
+ printf (" %s", l->name);
+ if (l->wait_after > 0)
+ usleep (l->wait_after);
+ err = pthread_rwlock_unlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_unlock failed, error = %d\n", err);
+ abort ();
+ }
+
+ return NULL;
+}
+
+static void *
+writer_func (void *arg)
+{
+ struct locals *l = arg;
+ int err;
+
+ if (l->wait_before > 0)
+ usleep (l->wait_before);
+ err = pthread_rwlock_wrlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_rdlock failed, error = %d\n", err);
+ abort ();
+ }
+ printf (" %s", l->name);
+ if (l->wait_after > 0)
+ usleep (l->wait_after);
+ err = pthread_rwlock_unlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_unlock failed, error = %d\n", err);
+ abort ();
+ }
+
+ return NULL;
+}
+
+static void
+do_test (const char *rw_string)
+{
+ size_t n = strlen (rw_string);
+ int err;
+
+ char **names = (char **) malloc (n * sizeof (char *));
+ for (size_t i = 0; i < n; i++)
+ {
+ char name[10];
+ sprintf (name, "%c%u", rw_string[i], (unsigned int) (i+1));
+ names[i] = strdup (name);
+ printf ("%s ", names[i]);
+ }
+
+#if defined PREFER_WRITER /* optionally, on glibc */
+ pthread_rwlockattr_t attr;
+ pthread_rwlockattr_init (&attr);
+ pthread_rwlockattr_setkind_np (&attr, PTHREAD_RWLOCK_PREFER_WRITER_NP);
+ err = pthread_rwlock_init (&lock, &attr);
+ pthread_rwlockattr_destroy (&attr);
+#elif defined PREFER_WRITER_NONRECURSIVE /* optionally, on glibc */
+ pthread_rwlockattr_t attr;
+ pthread_rwlockattr_init (&attr);
+ pthread_rwlockattr_setkind_np (&attr, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
+ err = pthread_rwlock_init (&lock, &attr);
+ pthread_rwlockattr_destroy (&attr);
+#else /* default */
+ err = pthread_rwlock_init (&lock, NULL);
+#endif
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_init failed, error = %d\n", err);
+ abort ();
+ }
+
+ printf ("=>");
+
+ /* Create the threads. */
+ struct locals *locals = (struct locals *) malloc (n * sizeof (struct locals));
+ pthread_t *threads = (pthread_t *) malloc (n * sizeof (pthread_t));
+ for (size_t i = 0; i < n; i++)
+ {
+ locals[i].name = names[i];
+ locals[i].wait_before = i * STEP_INTERVAL;
+ locals[i].wait_after = (i == 0 ? n * STEP_INTERVAL : 0);
+ err = pthread_create (&threads[i], NULL,
+ rw_string[i] == 'R' ? reader_func : rw_string[i] == 'W' ? writer_func : (abort (), NULL),
+ &locals[i]);
+ if (err)
+ {
+ fprintf (stderr, "pthread_create failed to create thread %u, error = %d\n", (unsigned int) (i+1), err);
+ abort ();
+ }
+ }
+
+ /* Wait until the threads are done. */
+ for (size_t i = 0; i < n; i++)
+ {
+ void *retcode;
+ err = pthread_join (threads[i], &retcode);
+ if (err)
+ {
+ fprintf (stderr, "pthread_join failed to wait for thread %u, error = %d\n", (unsigned int) (i+1), err);
+ abort ();
+ }
+ }
+
+ printf ("\n");
+
+ /* Clean up. */
+ err = pthread_rwlock_destroy (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_destroy failed, error = %d\n", err);
+ abort ();
+ }
+ free (threads);
+ free (locals);
+ for (size_t i = 0; i < n; i++)
+ free (names[i]);
+ free (names);
+}
+
+int
+main (int argc, char *argv[])
+{
+ if (argc != 2)
+ {
+ fprintf (stderr, "Usage: foo RW..WR\nor: foo n\n");
+ exit (1);
+ }
+
+ const char *arg1 = argv[1];
+ if (arg1[0] == 'R' || arg1[0] == 'W')
+ do_test (arg1);
+ else
+ {
+ unsigned int n_max = (int) atoi (argv[1]);
+ for (unsigned int n = 1; n <= n_max; n++)
+ {
+ char *buf = malloc (n+1);
+ for (unsigned int k = 0; k < (1U << n); k++)
+ {
+ for (unsigned int i = 0; i < n; i++)
+ buf[i] = ((k >> (n-1-i)) & 1 ? 'W' : 'R');
+ buf[n] = '\0';
+
+ do_test (buf);
+ }
+ free (buf);
+ }
+ }
+
+ return 0;
+}
+
+/*
+ gcc -Wall foo.c [-lpthread] -o foo
+ On glibc also:
+ gcc -Wall foo.c [-lpthread] -o foo -DPREFER_WRITER
+ gcc -Wall foo.c [-lpthread] -o foo -DPREFER_WRITER_NONRECURSIVE
+
+ For use with gnulib:
+ - Add #include <config.h> at the top.
+ - Use compilation options
+ -Itestdir/build -Itestdir/build/gllib -Itestdir/gllib \
+ -Ltestdir/build/libgnu.a
+*/
--- /dev/null
+#!/bin/sh
+
+# Copyright (C) 2024 Free Software Foundation, Inc.
+#
+# This file is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License,
+# or (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+./foo R
+./foo W
+
+./foo RR
+./foo RW
+./foo WR
+./foo WW
+
+./foo RRR
+./foo RRW
+./foo RWR
+./foo RWW
+./foo WRR
+./foo WRW
+./foo WWR
+./foo WWW
+
+./foo RRRR
+./foo RRRW
+./foo RRWR
+./foo RRWW
+./foo RWRR
+./foo RWRW
+./foo RWWR
+./foo RWWW
+./foo WRRR
+./foo WRRW
+./foo WRWR
+./foo WRWW
+./foo WWRR
+./foo WWRW
+./foo WWWR
+./foo WWWW
+
+./foo RRRRR
+./foo RRRRW
+./foo RRRWR
+./foo RRRWW
+./foo RRWRR
+./foo RRWRW
+./foo RRWWR
+./foo RRWWW
+./foo RWRRR
+./foo RWRRW
+./foo RWRWR
+./foo RWRWW
+./foo RWWRR
+./foo RWWRW
+./foo RWWWR
+./foo RWWWW
+./foo WRRRR
+./foo WRRRW
+./foo WRRWR
+./foo WRRWW
+./foo WRWRR
+./foo WRWRW
+./foo WRWWR
+./foo WRWWW
+./foo WWRRR
+./foo WWRRW
+./foo WWRWR
+./foo WWRWW
+./foo WWWRR
+./foo WWWRW
+./foo WWWWR
+./foo WWWWW
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R2 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R3 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R4 R3
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R5 R4
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R4 R2 R3 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 W5 R2 R4 R3
+W1 R2 R3 W4 R5 => W1 W4 R2 R5 R3
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R5 R4
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R2 R3
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R3 R4 R2 R5
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R3 R2 R5 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R2 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R4 R5 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R3 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R4 R3 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R3 R5 R4 R2
+W1 R2 R3 R4 W5 => W1 W5 R2 R4 R3
+W1 R2 R3 W4 R5 => W1 W4 R3 R2 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R4 R2 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W4 W2
+R1 W2 W3 R4 => R1 R4 W3 W2
+R1 W2 W3 W4 => R1 W4 W3 W2
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W5 W3
+R1 R2 W3 W4 R5 => R1 R2 R5 W4 W3
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W5 W2
+R1 W2 R3 W4 R5 => R1 R3 R5 W4 W2
+R1 W2 R3 W4 W5 => R1 R3 W5 W4 W2
+R1 W2 W3 R4 R5 => R1 R4 R5 W3 W2
+R1 W2 W3 R4 W5 => R1 R4 W5 W3 W2
+R1 W2 W3 W4 R5 => R1 R5 W4 W3 W2
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W5 W2 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W4 W2
+R1 W2 W3 R4 => R1 R4 W3 W2
+R1 W2 W3 W4 => R1 W4 W3 W2
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W5 W3
+R1 R2 W3 W4 R5 => R1 R2 R5 W4 W3
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W5 W2
+R1 W2 R3 W4 R5 => R1 R3 R5 W4 W2
+R1 W2 R3 W4 W5 => R1 R3 W5 W4 W2
+R1 W2 W3 R4 R5 => R1 R4 R5 W3 W2
+R1 W2 W3 R4 W5 => R1 R4 W5 W3 W2
+R1 W2 W3 W4 R5 => R1 R5 W4 W3 W2
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W5 W2 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R2 R4 R3
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R5 R3 R4
+W1 R2 R3 R4 W5 => W1 W5 R2 R4 R3
+W1 R2 R3 W4 R5 => W1 W4 R2 R5 R3
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R4 R2 R5 R3
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R5 R3
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R2 R3
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R4 R2
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R2 R3
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R2 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R4 R3
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R5 R4 R3
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R5 R3
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R5 R4
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R2 R4 R3
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R2 R3 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R4 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R4 R2 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R5 R4 R3
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R5 R4 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R5 R4 R3 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R5 R3 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R5 R4 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 R3 R2 W4
+W1 R2 W3 R4 => W1 R4 R2 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R5 R2 R3 W4
+W1 R2 R3 W4 W5 => W1 R3 R2 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R5 R4 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R5 R4 W2
+W1 W2 R3 R4 W5 => W1 R4 R3 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R3 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R4 R2
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R3 R2 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R3 R5 R2 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R2 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R4 R3 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R5 R3 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R2 R4
+W1 R2 R3 W4 R5 => W1 W4 R3 R2 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R5 R4
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W2 W4 R3 R5
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W4 W5 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R4 R5
+W1 R2 W3 R4 W5 => W1 W3 W5 R2 R4
+W1 R2 W3 W4 R5 => W1 W3 W4 R2 R5
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W2 W4 R3 R5
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 R3 W2
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 R4 W3
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 R3 R4 W2
+W1 W2 R3 W4 => W1 R3 W2 W4
+W1 W2 W3 R4 => W1 R4 W2 W3
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 R5 W4
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 R4 R5 W3
+W1 R2 W3 R4 W5 => W1 R2 R4 W3 W5
+W1 R2 W3 W4 R5 => W1 R2 R5 W3 W4
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 R3 R4 R5 W2
+W1 W2 R3 R4 W5 => W1 R3 R4 W2 W5
+W1 W2 R3 W4 R5 => W1 R3 R5 W2 W4
+W1 W2 R3 W4 W5 => W1 R3 W2 W4 W5
+W1 W2 W3 R4 R5 => W1 R4 R5 W2 W3
+W1 W2 W3 R4 W5 => W1 R4 W2 W3 W5
+W1 W2 W3 W4 R5 => W1 R5 W2 W3 W4
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R4 R3
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R5 R4
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R4 R3
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R3 R2 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R5 R4
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R3 R4 R5 R2
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R3 R2 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R5 R4
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R5 R4 R3
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R4 R3 R5
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R3 R2 W4 R5
+W1 R2 R3 W4 W5 => W1 R3 R2 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R5 R4
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R3 R2 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R4 R3 R5
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R4 R3 R5
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R5 R4
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W2 R3 W4
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R4 R3
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 R4 W5
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W2 R3 R4 W5
+R1 W2 R3 W4 R5 => R1 W2 R3 W4 R5
+R1 W2 R3 W4 W5 => R1 W2 R3 W4 W5
+R1 W2 W3 R4 R5 => R1 W2 W3 R4 R5
+R1 W2 W3 R4 W5 => R1 W2 W3 R4 W5
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R4 R3 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W2 W4 R3
+R1 W2 W3 R4 => R1 W2 W3 R4
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W3 W4 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W2 W4 R3
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W3 W5 R4
+R1 R2 W3 W4 R5 => R1 R2 W3 W4 R5
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W2 W4 R5 R3
+R1 W2 R3 W4 W5 => R1 W2 W4 W5 R3
+R1 W2 W3 R4 R5 => R1 W2 W3 R5 R4
+R1 W2 W3 R4 W5 => R1 W2 W3 W5 R4
+R1 W2 W3 W4 R5 => R1 W2 W3 W4 R5
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W4 W5 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W3 W5 R4 R2
+W1 R2 W3 W4 R5 => W1 W3 W4 R5 R2
+W1 R2 W3 W4 W5 => W1 W3 W4 W5 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W2 W4 R5 R3
+W1 W2 R3 W4 W5 => W1 W2 W4 W5 R3
+W1 W2 W3 R4 R5 => W1 W2 W3 R5 R4
+W1 W2 W3 R4 W5 => W1 W2 W3 W5 R4
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 R3 W2
+R1 W2 W3 => R1 W2 W3
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 R2 W3
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 R4 W3
+R1 R2 W3 W4 => R1 R2 W3 W4
+R1 W2 R3 R4 => R1 R3 R4 W2
+R1 W2 R3 W4 => R1 R3 W2 W4
+R1 W2 W3 R4 => R1 R4 W2 W3
+R1 W2 W3 W4 => R1 W2 W3 W4
+W1 R2 R3 R4 => W1 R2 R3 R4
+W1 R2 R3 W4 => W1 R2 R3 W4
+W1 R2 W3 R4 => W1 R2 W3 R4
+W1 R2 W3 W4 => W1 R2 W3 W4
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W2 R3 W4
+W1 W2 W3 R4 => W1 W2 W3 R4
+W1 W2 W3 W4 => W1 W2 W3 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 R5 W4
+R1 R2 R3 W4 W5 => R1 R2 R3 W4 W5
+R1 R2 W3 R4 R5 => R1 R2 R4 R5 W3
+R1 R2 W3 R4 W5 => R1 R2 R4 W3 W5
+R1 R2 W3 W4 R5 => R1 R2 R5 W3 W4
+R1 R2 W3 W4 W5 => R1 R2 W3 W4 W5
+R1 W2 R3 R4 R5 => R1 R3 R4 R5 W2
+R1 W2 R3 R4 W5 => R1 R3 R4 W2 W5
+R1 W2 R3 W4 R5 => R1 R3 R5 W2 W4
+R1 W2 R3 W4 W5 => R1 R3 W2 W4 W5
+R1 W2 W3 R4 R5 => R1 R4 R5 W2 W3
+R1 W2 W3 R4 W5 => R1 R4 W2 W3 W5
+R1 W2 W3 W4 R5 => R1 R5 W2 W3 W4
+R1 W2 W3 W4 W5 => R1 W2 W3 W4 W5
+W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5
+W1 R2 R3 R4 W5 => W1 R2 R3 R4 W5
+W1 R2 R3 W4 R5 => W1 R2 R3 W4 R5
+W1 R2 R3 W4 W5 => W1 R2 R3 W4 W5
+W1 R2 W3 R4 R5 => W1 R2 W3 R4 R5
+W1 R2 W3 R4 W5 => W1 R2 W3 R4 W5
+W1 R2 W3 W4 R5 => W1 R2 W3 W4 R5
+W1 R2 W3 W4 W5 => W1 R2 W3 W4 W5
+W1 W2 R3 R4 R5 => W1 W2 R3 R4 R5
+W1 W2 R3 R4 W5 => W1 W2 R3 R4 W5
+W1 W2 R3 W4 R5 => W1 W2 R3 W4 R5
+W1 W2 R3 W4 W5 => W1 W2 R3 W4 W5
+W1 W2 W3 R4 R5 => W1 W2 W3 R4 R5
+W1 W2 W3 R4 W5 => W1 W2 W3 R4 W5
+W1 W2 W3 W4 R5 => W1 W2 W3 W4 R5
+W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W5 W2 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R5 R2 R3 R4
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R3 R4
+W1 W2 R3 R4 W5 => W1 W5 W2 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R3 R4
+R1 W2 R3 R4 W5 => R1 W5 W2 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R3 R5
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R4 R5
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R4 R5 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R3 R4
+W1 W2 R3 R4 W5 => W1 W5 W2 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W5 W2 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R2 R5 R4 R3
+W1 R2 R3 R4 W5 => W1 W5 R3 R4 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R2 R3
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R3 R4
+W1 W2 R3 R4 W5 => W1 W5 W2 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W5 W2 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R5 R3 R2 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R2 R4
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R2 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R3 R4
+W1 W2 R3 R4 W5 => W1 W5 W2 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R3 R5
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R4 R2 R3
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W5 W2 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R5 R3 R2 R4
+W1 R2 R3 R4 W5 => W1 W5 R2 R3 R4
+W1 R2 R3 W4 R5 => W1 W4 R5 R2 R3
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R2 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R2 R5
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R3 R5
+W1 W2 R3 R4 W5 => W1 W5 W2 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R4 R5
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W5 W2 R3 R4
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R3 R2 R4
+W1 R2 R3 W4 R5 => W1 W4 R2 R3 R5
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R2 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R2 R5
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R3 R4
+W1 W2 R3 R4 W5 => W1 W5 W2 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W5 W2 R3 R4
+R1 W2 R3 W4 R5 => R1 W4 W2 R3 R5
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R2 R3 R5 R4
+W1 R2 R3 R4 W5 => W1 W5 R4 R2 R3
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R3 R5 R4
+W1 W2 R3 R4 W5 => W1 W5 W2 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R3 R4 R5
+R1 W2 R3 R4 W5 => R1 W5 W2 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R5 R3 R2 R4
+W1 R2 R3 R4 W5 => W1 W5 R3 R4 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W5 W2 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W2 W3
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W4 W2 W3
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W4 W3 W2
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W5 W2 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R3 R5
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R4 R5
+R1 W2 W3 R4 W5 => R1 W5 W2 W3 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W3 W2
+W1 R2 R3 R4 R5 => W1 R4 R5 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R2 R3
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W5 W2 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W2 W3 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W3 W2
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R2 R3
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W4 W2 R3 R5
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R4 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R5 R2 R3
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R3 R5
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R4 R5
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R4 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R3 R5
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R4 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R4 R2 R3
+W1 R2 R3 W4 R5 => W1 W4 R5 R3 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R5 R4 R2
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R3 R4
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R3 R5
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R4 R3 R2
+W1 R2 R3 R4 W5 => W1 W5 R4 R2 R3
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R2 R3
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R2 R4
+W1 R2 W3 W4 R5 => W1 W4 W3 R2 R5
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R2 R3
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R3 R4
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R4 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R4 R2 R3
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R2 R4
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R4 R3
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R5 R3 R4
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R2 R5 R4 R3
+W1 R2 R3 R4 W5 => W1 W5 R3 R4 R2
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R3 R5
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R4 R5
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R2 R4 R3
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R2 R5
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R5 R4 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R3 R4
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R4 R3
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R3 R4 R2
+W1 R2 R3 W4 => W1 W4 R2 R3
+W1 R2 W3 R4 => W1 W3 R4 R2
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R4 R5
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R4 R5 R3
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R4 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R4 R3 R2
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R2 R5 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R4 R2
+W1 R2 W3 W4 R5 => W1 W4 W3 R2 R5
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+R1 => R1
+W1 => W1
+R1 R2 => R1 R2
+R1 W2 => R1 W2
+W1 R2 => W1 R2
+W1 W2 => W1 W2
+R1 R2 R3 => R1 R2 R3
+R1 R2 W3 => R1 R2 W3
+R1 W2 R3 => R1 W2 R3
+R1 W2 W3 => R1 W3 W2
+W1 R2 R3 => W1 R3 R2
+W1 R2 W3 => W1 W3 R2
+W1 W2 R3 => W1 W2 R3
+W1 W2 W3 => W1 W3 W2
+R1 R2 R3 R4 => R1 R2 R3 R4
+R1 R2 R3 W4 => R1 R2 R3 W4
+R1 R2 W3 R4 => R1 R2 W3 R4
+R1 R2 W3 W4 => R1 R2 W4 W3
+R1 W2 R3 R4 => R1 W2 R3 R4
+R1 W2 R3 W4 => R1 W4 W2 R3
+R1 W2 W3 R4 => R1 W3 W2 R4
+R1 W2 W3 W4 => R1 W3 W2 W4
+W1 R2 R3 R4 => W1 R4 R3 R2
+W1 R2 R3 W4 => W1 W4 R3 R2
+W1 R2 W3 R4 => W1 W3 R2 R4
+W1 R2 W3 W4 => W1 W4 W3 R2
+W1 W2 R3 R4 => W1 W2 R3 R4
+W1 W2 R3 W4 => W1 W4 W2 R3
+W1 W2 W3 R4 => W1 W3 W2 R4
+W1 W2 W3 W4 => W1 W3 W2 W4
+R1 R2 R3 R4 R5 => R1 R2 R3 R4 R5
+R1 R2 R3 R4 W5 => R1 R2 R3 R4 W5
+R1 R2 R3 W4 R5 => R1 R2 R3 W4 R5
+R1 R2 R3 W4 W5 => R1 R2 R3 W5 W4
+R1 R2 W3 R4 R5 => R1 R2 W3 R5 R4
+R1 R2 W3 R4 W5 => R1 R2 W5 W3 R4
+R1 R2 W3 W4 R5 => R1 R2 W4 W3 R5
+R1 R2 W3 W4 W5 => R1 R2 W5 W4 W3
+R1 W2 R3 R4 R5 => R1 W2 R3 R5 R4
+R1 W2 R3 R4 W5 => R1 W2 W5 R4 R3
+R1 W2 R3 W4 R5 => R1 W4 W2 R5 R3
+R1 W2 R3 W4 W5 => R1 W5 W4 W2 R3
+R1 W2 W3 R4 R5 => R1 W3 W2 R5 R4
+R1 W2 W3 R4 W5 => R1 W5 W3 W2 R4
+R1 W2 W3 W4 R5 => R1 W4 W3 W2 R5
+R1 W2 W3 W4 W5 => R1 W5 W4 W2 W3
+W1 R2 R3 R4 R5 => W1 R5 R4 R2 R3
+W1 R2 R3 R4 W5 => W1 W5 R3 R4 R2
+W1 R2 R3 W4 R5 => W1 W4 R3 R5 R2
+W1 R2 R3 W4 W5 => W1 W5 W4 R3 R2
+W1 R2 W3 R4 R5 => W1 W3 R5 R2 R4
+W1 R2 W3 R4 W5 => W1 W5 W3 R2 R4
+W1 R2 W3 W4 R5 => W1 W4 W3 R5 R2
+W1 R2 W3 W4 W5 => W1 W5 W4 W3 R2
+W1 W2 R3 R4 R5 => W1 W2 R4 R5 R3
+W1 W2 R3 R4 W5 => W1 W2 W5 R4 R3
+W1 W2 R3 W4 R5 => W1 W4 W2 R5 R3
+W1 W2 R3 W4 W5 => W1 W5 W4 W2 R3
+W1 W2 W3 R4 R5 => W1 W3 W2 R5 R4
+W1 W2 W3 R4 W5 => W1 W5 W3 W2 R4
+W1 W2 W3 W4 R5 => W1 W4 W3 W2 R5
+W1 W2 W3 W4 W5 => W1 W5 W4 W2 W3
--- /dev/null
+How do the implementations work?
+
+glibc/Linux <2.25 default, glibc/Linux PREFER_WRITER, AIX, Android
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+
+glibc/Linux PREFER_WRITER_NONRECURSIVE, FreeBSD, Cygwin
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+
+glibc/Linux ≥2.25 default
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for reading, one of
+ them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ This implementation always prefers readers.
+ This implementation does not prefer writers.
+
+glibc/Hurd
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the latest (LIFO!) waiting write attempt is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ latest (LIFO!) one of them is granted.
+ Otherwise, the latest (LIFO!) of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+ This implementation is deterministic.
+
+musl, OpenBSD
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ The first of the enqueued lock attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not prefer writers.
+ This implementation is deterministic.
+
+macOS
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not prefer writers.
+
+NetBSD
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, the latest (LIFO!) of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+ This implementation is deterministic.
+
+Solaris 10
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ latest (LIFO!) one of them is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, one of
+ the waiting write attempts is granted (not necessarily the first one).
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation always prefers writers.
+
+Solaris 11
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for writing, one
+ of them is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, one of
+ the waiting write attempts is granted (not necessarily the first one).
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation always prefers writers.
+
+gnulib on native Windows
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, the first of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+ This implementation is deterministic.
+
+gnulib on native Windows, modified to prefer readers
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ This implementation always prefers readers.
+ This implementation does not prefer writers.
+ This implementation is deterministic.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the latest (LIFO!) waiting write attempt is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ latest (LIFO!) one of them is granted.
+ Otherwise, the latest (LIFO!) of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+ This implementation is deterministic.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for reading, one of
+ them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ This implementation always prefers readers.
+ This implementation does not prefer writers.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ This implementation always prefers readers.
+ This implementation does not prefer writers.
+ This implementation is deterministic.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, the first of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+ This implementation is deterministic.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first of them is granted.
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not prefer writers.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ The first of the enqueued lock attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not prefer writers.
+ This implementation is deterministic.
--- /dev/null
+ When releasing the last reader lock:
+ The first of the enqueued lock attempts is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ first one of them is granted.
+ Otherwise, the latest (LIFO!) of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation does not globally prefer writers, only when releasing
+ a writer lock.
+ This implementation is deterministic.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for reading, the
+ first one of them is granted.
+ Otherwise, the first of the waiting write attempts is granted.
+ When releasing a writer lock:
+ The first of the enqueued lock attempts is granted.
+ This implementation does not globally prefer readers, only when releasing
+ a reader lock.
+ This implementation does not prefer writers.
+ This implementation is deterministic.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for writing, the
+ latest (LIFO!) one of them is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, one of
+ the waiting write attempts is granted (not necessarily the first one).
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation always prefers writers.
--- /dev/null
+ When releasing the last reader lock:
+ If at least one of the enqueued lock attempts is for writing, one
+ of them is granted.
+ When releasing a writer lock:
+ If at least one of the enqueued lock attempts is for writing, one of
+ the waiting write attempts is granted (not necessarily the first one).
+ Otherwise, one of the waiting read attempts is granted.
+ This implementation does not prefer readers.
+ This implementation always prefers writers.
--- /dev/null
+#!/bin/sh
+# Usage: rwlock-analyze.sh rwlock-PLATFORM-output
+
+# Copyright (C) 2024 Free Software Foundation, Inc.
+#
+# This file is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published
+# by the Free Software Foundation, either version 3 of the License,
+# or (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+file="$1"
+
+# Notes:
+
+# n=1 all are trivial:
+# R1 => R1
+# W1 => W1
+
+# n=2 all are trivial:
+# R1 R2 => R1 R2
+# R1 W2 => R1 W2
+# W1 R2 => W1 R2
+# W1 W2 => W1 W2
+
+# These are mandatory behaviour of rwlocks:
+# R1 R2 ... R(i-1) ... => R1 R2 ... R(i-1) ...
+# because the R2 ... R(i-1) succeed while R1 is still being held.
+
+unexpected=`grep '^R1 .*=> ' $file | grep -v '^R1 .*=> R1'; \
+ grep '^R1 R2 .*=> ' $file | grep -v '^R1 R2 .*=> R1 R2'; \
+ grep '^R1 R2 R3 .*=> ' $file | grep -v '^R1 R2 R3 .*=> R1 R2 R3'; \
+ grep '^R1 R2 R3 R4 .*=> ' $file | grep -v '^R1 R2 R3 R4 .*=> R1 R2 R3 R4'; \
+ grep '^R1 R2 R3 R4 R5 .*=> ' $file | grep -v '^R1 R2 R3 R4 R5 .*=> R1 R2 R3 R4 R5'`
+if test -n "$unexpected"; then
+ echo "!! UNEXPECTED !!"
+ echo "$unexpected"
+fi
+
+deterministic=true
+
+echo " When releasing the last reader lock:"
+
+# These are the lines that matter:
+# R1 W2 R3 => R1 ...
+# R1 W2 W3 => R1 ...
+# R1 W2 R3 R4 => R1 ...
+# R1 W2 R3 W4 => R1 ...
+# R1 W2 W3 R4 => R1 ...
+# R1 W2 W3 W4 => R1 ...
+# R1 W2 R3 R4 R5 => R1 ...
+# R1 W2 R3 R4 W5 => R1 ...
+# R1 W2 R3 W4 R5 => R1 ...
+# R1 W2 R3 W4 W5 => R1 ...
+# R1 W2 W3 R4 R5 => R1 ...
+# R1 W2 W3 R4 W5 => R1 ...
+# R1 W2 W3 W4 R5 => R1 ...
+# R1 W2 W3 W4 W5 => R1 ...
+
+prefers_readers_1=false
+prefers_writers_1=false
+if grep '^R1 W2 R3 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 W5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 W5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 W5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 W5 => R1 W2' $file >/dev/null \
+; then
+ echo " The first of the enqueued lock attempts is granted."
+else
+ if grep '^R1 W2 R3 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 R5 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 W5 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 R5 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 W5 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 R5 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 W5 => R1 R' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 R5 => R1 R' $file >/dev/null \
+ ; then
+ prefers_readers_1=true
+ if grep '^R1 W2 R3 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 => R1 R4' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 R5 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 W5 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 R5 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 W5 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 R5 => R1 R4' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 W5 => R1 R4' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 R5 => R1 R5' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for reading, the"
+ echo " first one of them is granted."
+ else
+ if grep '^R1 W2 R3 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 => R1 R4' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 => R1 R4' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 R5 => R1 R5' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 W5 => R1 R4' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 R5 => R1 R5' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 W5 => R1 R3' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 R5 => R1 R5' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 W5 => R1 R4' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 R5 => R1 R5' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for reading, the"
+ echo " latest (LIFO!) one of them is granted."
+ else
+ echo " If at least one of the enqueued lock attempts is for reading, one"
+ echo " of them is granted."
+ deterministic=false
+ fi
+ fi
+ if grep '^R1 W2 W3 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 W5 => R1 W2' $file >/dev/null \
+ ; then
+ echo " Otherwise, the first of the waiting write attempts is granted."
+ else
+ if grep '^R1 W2 W3 => R1 W3' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 => R1 W4' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 W5 => R1 W5' $file >/dev/null \
+ ; then
+ echo " Otherwise, the latest (LIFO!) waiting write attempt is granted."
+ else
+ echo " Otherwise ???"
+ deterministic=false
+ fi
+ fi
+ else
+ if grep '^R1 W2 R3 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 W3 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 R5 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 W5 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 R5 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 W5 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 R5 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 W5 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 R5 => R1 W' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 W5 => R1 W' $file >/dev/null \
+ ; then
+ prefers_writers_1=true
+ if grep '^R1 W2 R3 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 W5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 W5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 W5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 W5 => R1 W2' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for writing, the"
+ echo " first one of them is granted."
+ else
+ if grep '^R1 W2 R3 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 W3 => R1 W3' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 => R1 W4' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 => R1 W3' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 => R1 W4' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 R5 => R1 W2' $file >/dev/null \
+ && grep '^R1 W2 R3 R4 W5 => R1 W5' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 R5 => R1 W4' $file >/dev/null \
+ && grep '^R1 W2 R3 W4 W5 => R1 W5' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 R5 => R1 W3' $file >/dev/null \
+ && grep '^R1 W2 W3 R4 W5 => R1 W5' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 R5 => R1 W4' $file >/dev/null \
+ && grep '^R1 W2 W3 W4 W5 => R1 W5' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for writing, the"
+ echo " latest (LIFO!) one of them is granted."
+ else
+ echo " If at least one of the enqueued lock attempts is for writing, one"
+ echo " of them is granted."
+ deterministic=false
+ fi
+ fi
+ else
+ echo " ???"
+ deterministic=false
+ fi
+ fi
+fi
+
+echo " When releasing a writer lock:"
+
+# These are the lines that matter:
+# W1 R2 R3 => W1 ...
+# W1 R2 W3 => W1 ...
+# W1 W2 R3 => W1 ...
+# W1 W2 W3 => W1 ...
+# W1 R2 R3 R4 => W1 ...
+# W1 R2 R3 W4 => W1 ...
+# W1 R2 W3 R4 => W1 ...
+# W1 R2 W3 W4 => W1 ...
+# W1 W2 R3 R4 => W1 ...
+# W1 W2 R3 W4 => W1 ...
+# W1 W2 W3 R4 => W1 ...
+# W1 W2 W3 W4 => W1 ...
+# W1 R2 R3 R4 R5 => W1 ...
+# W1 R2 R3 R4 W5 => W1 ...
+# W1 R2 R3 W4 R5 => W1 ...
+# W1 R2 R3 W4 W5 => W1 ...
+# W1 R2 W3 R4 R5 => W1 ...
+# W1 R2 W3 R4 W5 => W1 ...
+# W1 R2 W3 W4 R5 => W1 ...
+# W1 R2 W3 W4 W5 => W1 ...
+# W1 W2 R3 R4 R5 => W1 ...
+# W1 W2 R3 R4 W5 => W1 ...
+# W1 W2 R3 W4 R5 => W1 ...
+# W1 W2 R3 W4 W5 => W1 ...
+# W1 W2 W3 R4 R5 => W1 ...
+# W1 W2 W3 R4 W5 => W1 ...
+# W1 W2 W3 W4 R5 => W1 ...
+# W1 W2 W3 W4 W5 => W1 ...
+
+prefers_readers_2=false
+prefers_writers_2=false
+if grep '^W1 R2 R3 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W' $file >/dev/null \
+; then
+ if grep '^W1 R2 R3 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 => W1 W2' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W2' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W2' $file >/dev/null \
+ ; then
+ if grep '^W1 R2 R3 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 => W1 W2' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W2' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W2' $file >/dev/null \
+ ; then
+ echo " The first of the enqueued lock attempts is granted."
+ else
+ echo " If at least one of the enqueued lock attempts is for writing, the"
+ echo " first of them is granted."
+ echo " Otherwise, one of the waiting read attempts is granted."
+ deterministic=false
+ fi
+ else
+ echo " If at least one of the enqueued lock attempts is for writing, one of"
+ echo " the waiting write attempts is granted."
+ echo " Otherwise, one of the waiting read attempts is granted."
+ deterministic=false
+ fi
+else
+ if grep '^W1 R2 R3 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 R' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 R' $file >/dev/null \
+ ; then
+ prefers_readers_2=true
+ if grep '^W1 R2 R3 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 R3' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 R4' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 R2' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 R4' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 R4' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 R5' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for reading, the"
+ echo " first of them is granted."
+ else
+ if grep '^W1 R2 R3 => W1 R3' $file >/dev/null \
+ && grep '^W1 R2 W3 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 R3' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R4' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 R3' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 R4' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 R4' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 R4' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R5' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 R4' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 R5' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 R3' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 R5' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 R4' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 R5' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 R2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 R5' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 R4' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 R5' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 R3' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 R5' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 R4' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 R5' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for reading, the"
+ echo " latest (LIFO!) one of them is granted."
+ else
+ echo " If at least one of the enqueued lock attempts is for reading, one of"
+ echo " them is granted."
+ deterministic=false
+ fi
+ fi
+ if grep '^W1 W2 W3 => W1 W2 W3' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W2 W3 W4' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W2 W3 W4 W5' $file >/dev/null \
+ ; then
+ echo " Otherwise, the first of the waiting write attempts is granted."
+ else
+ if grep '^W1 W2 W3 => W1 W3' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W4' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W5' $file >/dev/null \
+ ; then
+ echo " Otherwise, the latest (LIFO!) of the waiting write attempts is granted."
+ else
+ echo " Otherwise ???"
+ deterministic=false
+ fi
+ fi
+ else
+ if grep '^W1 R2 W3 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 W' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W' $file >/dev/null \
+ ; then
+ prefers_writers_2=true
+ if grep '^W1 R2 W3 => W1 W3' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 => W1 W2' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 W4' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 W3' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 W3' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W2' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 W4' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 W4' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 W3' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 W3' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 W3' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 W3' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W2' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for writing, the"
+ echo " first one of them is granted."
+ else
+ if grep '^W1 R2 W3 => W1 W3' $file >/dev/null \
+ && grep '^W1 W2 R3 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 W3 => W1 W3' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 => W1 W4' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 => W1 W3' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 => W1 W4' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 => W1 W4' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 => W1 W3' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 => W1 W4' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 R5 => W1 W4' $file >/dev/null \
+ && grep '^W1 R2 R3 W4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 R5 => W1 W3' $file >/dev/null \
+ && grep '^W1 R2 W3 R4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 R5 => W1 W4' $file >/dev/null \
+ && grep '^W1 R2 W3 W4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 R5 => W1 W2' $file >/dev/null \
+ && grep '^W1 W2 R3 R4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 R5 => W1 W4' $file >/dev/null \
+ && grep '^W1 W2 R3 W4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 R5 => W1 W3' $file >/dev/null \
+ && grep '^W1 W2 W3 R4 W5 => W1 W5' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 R5 => W1 W4' $file >/dev/null \
+ && grep '^W1 W2 W3 W4 W5 => W1 W5' $file >/dev/null \
+ ; then
+ echo " If at least one of the enqueued lock attempts is for writing, the"
+ echo " latest (LIFO!) one of them is granted."
+ else
+ echo " If at least one of the enqueued lock attempts is for writing, one of"
+ echo " the waiting write attempts is granted (not necessarily the first one)."
+ deterministic=false
+ fi
+ fi
+ if grep '^W1 R2 R3 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R' $file >/dev/null \
+ ; then
+ if grep '^W1 R2 R3 => W1 R2 R3' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R2 R3 R4' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R2 R3 R4 R5' $file >/dev/null \
+ ; then
+ echo " Otherwise, the first of the waiting read attempts is granted."
+ else
+ if grep '^W1 R2 R3 => W1 R3' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 => W1 R4' $file >/dev/null \
+ && grep '^W1 R2 R3 R4 R5 => W1 R5' $file >/dev/null \
+ ; then
+ echo " Otherwise, the latest (LIFO!) of the waiting read attempts is granted."
+ else
+ echo " Otherwise, one of the waiting read attempts is granted."
+ deterministic=false
+ fi
+ fi
+ else
+ echo " Otherwise, ???"
+ deterministic=false
+ fi
+ else
+ echo " ???"
+ deterministic=false
+ fi
+ fi
+fi
+
+if $prefers_readers_1; then
+ if $prefers_readers_2; then
+ echo " This implementation always prefers readers."
+ else
+ echo " This implementation does not globally prefer readers, only when releasing"
+ echo " a reader lock."
+ fi
+else
+ if $prefers_readers_2; then
+ echo " This implementation does not globally prefer readers, only when releasing"
+ echo " a writer lock."
+ else
+ echo " This implementation does not prefer readers."
+ fi
+fi
+
+if $prefers_writers_1; then
+ if $prefers_writers_2; then
+ echo " This implementation always prefers writers."
+ else
+ echo " This implementation does not globally prefer writers, only when releasing"
+ echo " a reader lock."
+ fi
+else
+ if $prefers_writers_2; then
+ echo " This implementation does not globally prefer writers, only when releasing"
+ echo " a writer lock."
+ else
+ echo " This implementation does not prefer writers."
+ fi
+fi
+
+if $deterministic; then
+ echo " This implementation is deterministic."
+fi
+
+exit 0