#P11553. 绰绰有余

绰绰有余

题目描述

绰绰有余小 Y 秒了一个网格图挖点哈密顿回路和另一个网格哈密顿回路之后,想到了一个 1×n1\times n 的网格,如下图所示是 n=3n=3 时的情况。

绰绰有余小 Y 还有 mm 条链,第 ii 条链能覆盖 aia_i 条网格的边。他要把全部的链都覆盖到网格的边上,链可以弯曲和在端点上相交(包括和自己相交)。除了最右边的一条边,其他 3n3n 条边必须被恰好覆盖一次

比如 n=3,m=4,a={3,2,3,1}n=3,m=4,a=\{3,2,3,1\} 时,一种方案如下图。

绰绰有余小 Y 秒这题绰绰有余,但是他想让不绰绰有余的你来做一做。请你输出一种方案,或者表明无解。

输入格式

第一行两个正整数 n,mn,m (1n,m105)(1\le n,m \le 10^5),分别表示网格的大小和链的数量。

第二行 mm 个正整数,第 ii 个数 aia_i (1ai106)(1\le a_i \le 10^6),表示第 ii 条链的长度。

输出格式

如果不存在合法的方案,输出一行 "no"。

否则,第一行包含 "yes"。接下来 33 行每行 nn 个正整数。

  • 第一行第 ii 个数 xix_i 表示左数第 ii 条顶部的边被读入中第 xix_i 条链覆盖。
  • 第一行第 ii 个数 yiy_i 表示左数第 ii 条中间的边被读入中第 yiy_i 条链覆盖。
  • 第一行第 ii 个数 ziz_i 表示左数第 ii 条底部的边被读入中第 ziz_i 条链覆盖。

可以参考样例的图片进行理解。

样例一

input

2 3
4 1 1

output

yes
1 2
1 1
1 3

explanation

样例二

input

2 4
4 1 1 1

output

no

explanation

绰绰有余小 Y 必须用完所有链。

样例三

input

3 4
3 2 3 1

output

yes
1 1 3
1 2 3
2 3 4

限制与约定

由于一些原因,本题使用捆绑测试。每个子任务有若干个测试点,分为 44 个子任务,你只有通过一个子任务的所有测试点才能得到这个子任务的分数。

子任务 分值 性质
1 10 n3,m10n\le 3, m\le 10
2 20 1ai21\le a_i \le 2
3 30 ai1a_i\ne 1
4 40 无特殊性质

对于所有数据,1n,m105,1ai1061\le n,m\le 10^5, 1\le a_i\le 10^6

限制与约定

时间限制:1s1\texttt{s}

空间限制:1024MB1024\texttt{MB}