#include <bits/stdc++.h>
#define mod 1000000007
using namespace std;
struct matrix
{
	int a[3][3];
}ma({{{1,0,0},{1,1,0},{1,2,1}}}),mb({{{1,0,1},{1,1,1},{1,2,2}}}),ans({{{1,0,0},{0,1,0},{0,0,1}}});
matrix operator *(matrix a,matrix b)
{
	matrix c;
	memset(c.a,0,sizeof(c.a));
	for(int i=0;i<3;i++)
	{
		for(int j=0;j<3;j++)
		{
			for(int k=0;k<3;k++)
			{
				c.a[i][k]=(c.a[i][k]+1ll*a.a[i][j]*b.a[j][k])%mod;
			}
		}
	}
	return c;
}
matrix pw(matrix a,int t)
{
	matrix s=a;
	t--;
	while(t)
	{
		if(t&1) s=s*a;
		a=a*a;
		t>>=1;
	}
	return s;
}
int main()
{
	int n,m,lst=0;
	cin>>n>>m;
	for(int i=0;i<m;i++)
	{
		int x;cin>>x;
		if(x>lst+1) ans=ans*pw(mb,x-lst-1);
		ans=ans*ma;
		lst=x;
	}
	ans=ans*pw(mb,n-lst);
	cout<<ans.a[2][0]<<endl;
	return 0;
}