#include<bits/stdc++.h>
using namespace std;
const int N=5010;
int n;
int head[N],cnt;
struct edge
{
	int to,next;
}e[N<<1];
const int mod=1000000007;
void adde(int a,int b)
{
	e[++cnt].to=b; e[cnt].next=head[a]; head[a]=cnt;
}
long long f[N][N],g[N];
int sz[N];
void dfs(int u,int fa)
{
	f[u][1]=1;sz[u]=1;
	int tmp[N];
	memset(tmp,0,sizeof(tmp));
	for(int i=head[u];i;i=e[i].next)
	{
		int v=e[i].to;
		if(v==fa)continue;
		dfs(v,u);
		for(int j=sz[u];j>=0;j--)
			for(int k=sz[v];k>=0;k--)
				(tmp[j+k]+=f[u][j]*f[v][k]%mod)%=mod;
		sz[u]+=sz[v];
		for(int j=0;j<=sz[u];j++)
			f[u][j]=tmp[j],tmp[j]=0;
	}
	f[u][0]=0;
	for(int i=1;i<=sz[u];i++)
		(f[u][0]+=mod-f[u][i]*g[i]%mod)%=mod;
}
int main()
{
	scanf("%d",&n);
	int u,v;
	for(int i=1;i<n;i++)
	{
		scanf("%d%d",&u,&v);
		adde(u,v); adde(v,u);
	}
	g[2]=1;
	for(int i=4;i<=n;i+=2)g[i]=g[i-2]*(i-1)%mod;
	dfs(1,0);
	printf("%lld\n",(mod-f[1][0])%mod);
	return 0;
}