#include<iostream>#include<stdio.h>using namespace std;const int mod = (int)1e9+7;const int N = 100050;int opt[2][N],a[N];inline void up(int &s,int b){ s=(s+b)%mod;}int main(){ int s1,s2,n; while(scanf("%d%d",&s1,&s2)!=-1) { scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); int k1=0,k2=1,sum=s1+s2,ss=s1; for(int j=0;j<=s1;++j) opt[0][j]=opt[1][j]=0; opt[0][s1]=1; for(int i=1;i<=n;++i) { sum-=a[i]; ss-=a[i]; if(ss<=0) ss=0; for(int j=ss;j<=s1&&j<=sum;++j) { opt[k2][j]=opt[k1][j]; if(a[i]%2==0&&j+a[i]/2<=s1) up(opt[k2][j],opt[k1][j+a[i]/2]); if(j+a[i]<=s1) up(opt[k2][j],opt[k1][j+a[i]]); } k2^=1; k1^=1; } printf("%dn",opt[k1][0]); } return 0;}


