// luogu-judger-enable-o2

//A,Elebereth Gilthoniel mantae!
//For Temeria!
#include<bits/stdc++.h>


#include<iostream>
#include<algorithm>
#include<cmath>
#include<string>
#include<vector>
#include<set>
#include<cstdio>
#include<map>
#include<stack>
#include<queue>
#include<cstring> 
#pragma comment(linker, "/STACK:1024000000,1024000000");  
using namespace std;
int mod=1e9+7;
const int maxn=5008;
long long dp[maxn][maxn];int siz[maxn];
vector<int> v[maxn];int n;
long long g[maxn];long long st[maxn];
void dfs(int x,int p)
{
	siz[x]=1;dp[x][1]=1;
	for(int i=0;i<v[x].size();i++)
	{
		int t=v[x][i];if(t==p) continue;
		dfs(t,x);
		for(int j=siz[x];j>=0;--j)
		{
			st[j]=dp[x][j];dp[x][j]=0;
		}
		for(int j=siz[x];j>=0;--j)
		{
			for(int k=siz[t];k>=0;--k)
			{
				long long op=(long long)st[j]*(long long)dp[t][k]%(long long)mod;
				dp[x][j+k]+=op;
				dp[x][j+k]%=mod;
			}
		}siz[x]+=siz[t];
	}
	for(int j=0;j<=siz[x];j+=2)
	{
		dp[x][0]-=(int)(g[j]*(long long)dp[x][j]%(long long)mod);
		dp[x][0]%=mod;
	}
}
int main()
{
	cin>>n;
	g[0]=1;
	for(int i=2;i<=n+1;i+=2)
		g[i]=g[i-2]*(long long)(i-1)%(long long)mod;
	for(int i=1;i<n;i++)
	{
		int x,y;scanf("%d%d",&x,&y);
		v[x].push_back(y);v[y].push_back(x);
	}
	dfs(1,0);
	cout<<(-dp[1][0]%mod+mod)%mod;
}