蒟蒻wzc与方块涂色
题号:NC219179
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

蒟蒻wzc最近碰到了一道简单题,但是他实在是太弱了,怎么也做不出。
他非常得生气于是把这道题略微强化了一下拿出来考验大家。

现在wzc手上有一个边长为n(n>1)的由小方块组成的立方体。他现在对这个立方体方块棱边上的小方块进行涂色,最开始的时候所有小方块都是白色的,现在他会把一些小方块涂成黑色。
如果他对某一个小方块涂色,就会把这个小方块露在外面的所有部分都涂黑,比如顶角上的小方块露在外面的共有三面,如果对这个小方块涂色,wzc会把露出来的三面全部涂成黑色,而不是只涂其中一面或者两面。

如下图以n=3的立方体为例,现在把立方体的12条棱边用1-12的数字进行标记。
现在wzc希望把这12条棱边上,a1,a2,a3,....,a12个小方块涂成黑色。(ai代表编号为i的棱边上有ai个方块被涂成黑色)
他希望你可以帮他判断,是否存在涂色的方案,可以满足上述对每条棱上涂黑个数的要求。

输入描述:

第一行为一个整数t,代表测试数据组数。(1<=t<=1000)
接下来t行为t组测试数据,每组数据一行。
每组数据包含用空格隔开的13个整数,第一个整数为n,代表立方体每条棱边上有几个小方块,接下来为12个整数a1,a2,...,a12分别代表按题面图片所标记的12条棱边上各自有多少个方块被涂成了黑色。
(2<=n<=10,0<=ai<=n)

输出描述:

输出T行,每组测试数据对应输出一行。
如果存在满足的涂色方案,输出"YES",否则输出"NO"。
示例1

输入

复制
3
3 3 3 3 3 3 3 3 3 3 3 3 3
3 3 3 3 2 3 3 3 3 3 3 3 3
3 3 3 3 1 3 3 3 3 3 3 3 3

输出

复制
YES
YES
NO

说明

第一组数据把所有棱边上的小方块均涂黑即可。
第二组数据把除了第4条棱边上的所有小方块均涂黑,第4条棱边中间的小方块不涂黑即可。
第三组数据不存在满足的涂色方案。