#P16610. [GCPC2019]Keeping the Dogs Out

[GCPC2019]Keeping the Dogs Out

题目描述

你的朋友经常受到邻居家恶犬的困扰。她决定修建一堵墙,把这些狗挡在花园外面。

整堵墙必须处处等高,也就是说,墙的正面必须是一个没有任何孔洞的矩形。她并不在意墙的具体长和高,但要求使用掉所有已经购买的石块。

所有石块的厚度相同,但长度和高度可能不同。每块石头的长度等于高度,因此正面是一个正方形,并且边长一定是 22 的整数次幂。

墙的厚度必须与石块厚度相同。因此:

  • 不能旋转石块来改变其厚度方向;
  • 不能把两块石头前后叠放。

给定各种尺寸石块的数量,请判断能否使用全部石块拼成一堵没有孔洞的矩形墙。若可以,输出一种可能的墙的长度和高度。

上图展示了样例 1 的一种拼法。

输入格式

第一行包含一个整数 nn0n250\le n\le25),表示最大石块的边长为 2n2^n

第二行包含 n+1n+1 个整数 m0,m1,,mnm_0,m_1,\ldots,m_n0mi10150\le m_i\le10^{15}mn1m_n\ge1),其中 mim_i 表示边长为 2i2^i 的石块数量。

保证所有石块的总面积不超过 101510^{15}

输出格式

若能够使用全部石块拼成一堵没有孔洞的矩形墙,输出两个整数,表示一种可行的墙的长度和高度。

若存在多种方案,可以输出任意一种。

若无法完成,输出:

impossible

样例 1

输入

2
21 3 3

输出

9 9

样例 2

输入

2
0 3 2

输出

impossible