#include <bits/stdc++.h>
using namespace std;
const long long Mod=1000000007ll,Mul2[3][3]={{1,2,1},{0,1,1},{0,0,1}};
long long MMul[39][3][3]={{{1,2,1},{0,1,1},{1,2,2}}};
long long n,m,a[100090],mat[3]={1,0,0};

int main()
{
	for(int i=0;i<30;i++)
		for(int j=0;j<3;j++)
		for(int k=0;k<3;k++)
		for(int l=0;l<3;l++)
			MMul[i+1][j][k]=(MMul[i+1][j][k]+MMul[i][j][l]*MMul[i][l][k])%Mod;
	cin>>n>>m; a[m+1]=-1;
	do{
		if(m) cin>>a[m];
		else a[m]=n;
		long long k=a[m]-a[m+1]-1,_mat[3]={0,0,0};
		for(int i=0;i<30;i++) if(k&(1<<i))
		{
			for(int j=0;j<3;j++)
			for(int k=0;k<3;k++)
				_mat[j]=(_mat[j]+mat[k]*MMul[i][k][j])%Mod;
			for(int j=0;j<3;j++) mat[j]=_mat[j],_mat[j]=0;
		}
		if(m)
		{
			for(int j=0;j<3;j++)
			for(int k=0;k<3;k++)
				_mat[j]=(_mat[j]+mat[k]*Mul2[k][j])%Mod;
			for(int j=0;j<3;j++) mat[j]=_mat[j];
		}
//		printf("[%d %d %d]\n",mat[0],mat[1],mat[2]);
	}while(m--);
	cout<<mat[2];
}