using System;
class Program
{
int[] masks = { 0, 3, 6, 12, 15, 24, 27, 30 };
int CountTilings(int n, int m, int s = 0)
{
if (n == 1) { return 1; }
int result = 0;
foreach (int mask in masks)
{
if ((mask & s) == 0)
{
result += CountTilings(n - 1, m, mask);
}
}
return result;
}
public static void Main()
{
Program p = new Program();
int result = p.CountTilings(6, 5);
Console.WriteLine(result);
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgUHJvZ3JhbQp7CiAgICBpbnRbXSBtYXNrcyA9IHsgMCwgMywgNiwgMTIsIDE1LCAyNCwgMjcsIDMwIH07CgogICAgaW50IENvdW50VGlsaW5ncyhpbnQgbiwgaW50IG0sIGludCBzID0gMCkKICAgIHsKICAgICAgICBpZiAobiA9PSAxKSB7IHJldHVybiAxOyB9CgogICAgICAgIGludCByZXN1bHQgPSAwOwogICAgICAgIGZvcmVhY2ggKGludCBtYXNrIGluIG1hc2tzKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKChtYXNrICYgcykgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmVzdWx0ICs9IENvdW50VGlsaW5ncyhuIC0gMSwgbSwgbWFzayk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCiAgICB7CiAgICAgICAgUHJvZ3JhbSBwID0gbmV3IFByb2dyYW0oKTsKICAgICAgICBpbnQgcmVzdWx0ID0gcC5Db3VudFRpbGluZ3MoNiwgNSk7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUocmVzdWx0KTsKICAgIH0KfQ==