#include<bits/stdc++.h>
#define ll long long
#define mod 1000000007
#define N 100009
using namespace std;

int n,m,p[N];
struct matrix{ int p[3][3]; }a,b,c;
matrix operator *(matrix x,matrix y){
	matrix z; memset(z.p,0,sizeof(z.p));
	int i,j,k;
	for (i=0; i<3; i++)
		for (j=0; j<3; j++)
			for (k=0; k<3; k++) z.p[i][k]=(z.p[i][k]+(ll)x.p[i][j]*y.p[j][k])%mod;
	return z;
}
matrix ksm(matrix x,int y){
	matrix z; int i;
	memset(z.p,0,sizeof(a.p));
	for (i=0; i<3; i++) z.p[i][i]=1;
	for (; y; y>>=1,x=x*x) if (y&1) z=z*x;
	return z;	
}
int main(){
	scanf("%d%d",&m,&n);
	int i;
	b.p[0][0]=b.p[0][2]=b.p[1][1]=b.p[1][2]=b.p[2][0]=1;
	b.p[0][1]=b.p[2][1]=b.p[2][2]=2;
	memset(a.p,0,sizeof(a.p));
	p[0]=1;
	a.p[0][0]=a.p[0][2]=1; a.p[0][1]=2;
	for (i=1; i<=n; i++){
		scanf("%d",&p[i]); p[i]++;
		a=a*ksm(b,p[i]-p[i-1]-1);
		b.p[2][0]=b.p[2][1]=0; b.p[2][2]=1;
		a=a*b;
		b.p[2][0]=1; b.p[2][1]=b.p[2][2]=2;
	}
	a=a*ksm(b,m-p[n]);
	printf("%d\n",a.p[0][2]);
	return 0;
}
