Codeforces Round 747 (Div. 2)
E2
Rubik's Cube Coloring (hard version)
Codeforces
2300
原题
← E1F →
翻译中…

It is the hard version of the problem. The difference is that in this version, there are nodes with already chosen colors.

翻译中…

Theofanis is starving, and he wants to eat his favorite food, sheftalia. However, he should first finish his homework. Can you help him with this problem?

翻译中…

You have a perfect binary tree of $2^k - 1$ nodes — a binary tree where all vertices $i$ from $1$ to $2^{k - 1} - 1$ have exactly two children: vertices $2i$ and $2i + 1$. Vertices from $2^{k - 1}$ to $2^k - 1$ don't have any children. You want to color its vertices with the $6$ Rubik's cube colors (White, Green, Red, Blue, Orange and Yellow).

翻译中…

Let's call a coloring good when all edges connect nodes with colors that are neighboring sides in the Rubik's cube.

翻译中…

imageimage A picture of Rubik's cube and its 2D map.

翻译中…

More formally:

翻译中…
  • a white node can not be neighboring with white and yellow nodes;
  • a yellow node can not be neighboring with white and yellow nodes;
  • a green node can not be neighboring with green and blue nodes;
  • a blue node can not be neighboring with green and blue nodes;
  • a red node can not be neighboring with red and orange nodes;
  • an orange node can not be neighboring with red and orange nodes;
翻译中…

However, there are $n$ special nodes in the tree, colors of which are already chosen.

翻译中…

You want to calculate the number of the good colorings of the binary tree. Two colorings are considered different if at least one node is colored with a different color.

翻译中…

The answer may be too large, so output the answer modulo $10^9+7$.

翻译中…

Input

翻译中…

The first line contains the integers $k$ ($1 \le k \le 60$) — the number of levels in the perfect binary tree you need to color.

翻译中…

The second line contains the integer $n$ ($1 \le n \le \min(2^k - 1, 2000)$) — the number of nodes, colors of which are already chosen.

翻译中…

The next $n$ lines contains integer $v$ ($1 \le v \le 2^k - 1$) and string $s$ — the index of the node and the color of the node ($s$ is one of the white, yellow, green, blue, red and orange).

翻译中…

It is guaranteed that each node $v$ appears in the input at most once.

翻译中…

Output

翻译中…

Print one integer — the number of the different colorings modulo $10^9+7$.

翻译中…

Note

翻译中…

In the picture below, you can see one of the correct colorings of the first test example.

翻译中…

image

翻译中…

样例

Input #1
3
2
5 orange
2 white
Output #1
1024
InputCopy OutputCopy
Input #2
2
2
1 white
2 white
Output #2
0
InputCopy OutputCopy
Input #3
10
3
1 blue
4 red
5 orange
Output #3
328925088
InputCopy OutputCopy
题目信息
题号
1594E2
时间限制
3 s
内存限制
256 MB
标签
暴力
动态规划
模拟
数学
树

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。