#include<bits/stdc++.h>
using namespace std;
#define pb push_back
const int N=5005,P=1e9+7;
int n,a[N],f[N][N],t[N],sz[N];
vector<int>g[N]; 
void dfs(int x,int p)
{
	f[x][1]=1;sz[x]=1;
	for(int i=0;i<g[x].size();i++)if(g[x][i]!=p)
	{
		int y=g[x][i];dfs(y,x);
		for(int j=1;j<=sz[x];j++)t[j]=f[x][j],f[x][j]=0;
		for(int j=1;j<=sz[x];j++)for(int k=0;k<=sz[y];k++)f[x][j+k]=(f[x][j+k]+1ll*t[j]*f[y][k])%P;
		sz[x]+=sz[y];
	}
	for(int i=1;i<=sz[x];i++)f[x][0]=(f[x][0]+P-1ll*f[x][i]*a[i]%P)%P;
}
int main()
{
	scanf("%d",&n);a[0]=1;
	for(int i=2;i<=n;i+=2)a[i]=1ll*a[i-2]*(i-1)%P;
	for(int i=1,u,v;i<n;i++)scanf("%d%d",&u,&v),g[u].pb(v),g[v].pb(u);
	dfs(1,0);printf("%d\n",P-f[1][0]);return 0;
}