礼物
题号:NC50599
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

一年一度的圣诞节快要来到了。每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物。不同的人物在小E心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多。
小E从商店中购买了n件礼物,打算送给m个人,其中送给第i个人礼物数量为w_i。请你帮忙计算出送礼物的方案数(两个方案被认为是不同的,当且仅当存在某个人在这两种方案中收到的礼物不同)。由于方案数可能会很大,你只需要输出模P后的结果。

输入描述:

输入的第一行包含一个正整数P,表示模数;
第二行包含两个正整数n和m,分别表示小E从商店购买的礼物数和接受礼物的人数;
以下m行每行仅包含一个正整数w_i,表示小E要送给第i个人的礼物数量。

输出描述:

若不存在可行方案,则输出Impossible,否则输出一个整数,表示模P后的方案数。
示例1

输入

复制
100
4 2
1
2

输出

复制
12

说明

12种方案详情如下:{1 } {2,3 }, {1 } {2,4 }, {1 } {3,4 }, {2 } {1,3 }, {2 } {1,4 }, {2 } {3,4 }, {3 } {1,2 }, {3 } {1,4 }, {3 } {2,4 }, {4 } {1,2 }, {4 } {1,3 }, {4 } {2,3 }。

备注:

p_i为质数。
对于的数据,