#1513. 彩票

彩票

说明

W\textsf{W} 先生开设了一家彩票店,店内出售的一种彩票遵循以下中奖规则:

每张彩票包含 nn 个方格,每个方格可以填入一个 11mm 范围内的不同整数。每天售完彩票后,W\textsf{W} 先生会从 11mm 范围内随机抽取 nn 个不同的幸运号码。如果彩票上的号码与抽取的幸运号码恰好重合 ii 个数字(顺序无关,只有当号码同时出现在彩票和幸运号码中才算数),则该彩票的持有者将赢得 aia_i 枚硬币。

序列 a1,a2,,ana_1,a_2,\cdots,a_n 是一个递增的序列,表示彩票号码与幸运号码重合 ii 个数字时所获得的奖金(以硬币为单位)。

在某一天,商店 W\textsf{W} 售出了 kk 张彩票,并且 W\textsf{W} 知道所有彩票上的号码。为了最大化商店的利润,W\textsf{W} 的目标是找到最优的幸运号码组合,使得所有彩票的总奖金最小。如果存在多个幸运号码组合都能达到相同的最低奖金,W\textsf{W} 将选择按降序排列且字典序最小的组合。

你的任务是帮助 W\textsf{W} 找到这个最优的幸运号码组合,并按降序输出。

输入格式

第一行包含三个整数 n,m,kn,m,k (1nm231\le n\le m\le 23, 0nk1070\le n\cdot k \le 10^7),分别表示每张彩票上的数字个数、数字的取值范围为 [1,m][1,m],以及给定的彩票张数。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n (1ai1091\le a_i\le 10^9),其中 aia_i 表示匹配恰好 ii 个数字时获得的奖金。

接下来 kk 行,每行包含 nn 个整数,表示一张彩票上的数字。保证每张彩票内部的数字两两不同。

输出格式

输出的第一行包含一个整数,表示所有彩票中奖金额的最小值。

第二行输出 nn 个整数------由 W\textsf{W} 选出的中奖号码集合,按字典序降序排列。

如果多个中奖号码集合对应的最大奖金相同,则输出字典序最小的那个(同样按降序比较)。

样例

3 6 5
1 3 10
1 2 3
4 5 6
3 2 1
6 2 4
3 2 5
7
5 4 1