#SDNU1313. Chess

Chess

Description

XX有一个1n1*n的跳棋棋盘。今天小XX要去参加比赛,他希望所有的跳棋排成他希望的队形(即在指定的格子上有棋子)来给他加油。小XX只能在棋盘的第11个格或第22个格放置棋子,而其他的格子只能通过跳棋的跳跃到达。当且仅当第ii格有棋子,i+1i+1格有棋子,i+2i+2格为空的时候,ii格上的棋子能够跳到i+2i+2格上,与此同时i+1i+1格子上的棋子会消失。同理,当且仅当第ii格有棋子,i1i-1格有棋子,i2i-2格为空的时候,ii格上的棋子能够跳到i2i-2格上,与此同时i1i-1格子上的棋子会消失。

现在告诉你小XX希望那些格子上需要有棋子,你的任务是求出最少需要在棋盘上放置多少个棋子才能做到。

由于这个答案可能过大,为了简化问题,你只需要输出最终答案模268435456268435456的余数。

Format

Input

第一行22个整数:nnmmnn表示棋盘的大小,mm表示希望放置棋子的格子个数。2<n1000002\lt n\le 100000mnm\le n。所有的a[3,n]a\in [3,n],保证按非减序给出。

接下来mm行,每行一个整数aa,表示在第aa个格子上需要放置一枚棋子。

Output

一个整数,最少需要放置的棋子数量 mod 268435456268435456

Samples

4 2
3 
4
5