#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=1e9+7;
const int N=5050;
inline ll qpow(ll x,ll y,ll ans=1){
	for(;y;y>>=1,x=x*x%mod) if(y&1) ans=ans*x%mod;
	return ans;
}
int n,siz[N];
ll ans,js[N],f[N][N],tmp[N];
vector<int> g[N];
void dfs(int x,int fa){
	siz[x]=1; f[x][1]=1;
	for(int i=0;i<g[x].size();++i) if(g[x][i]!=fa){
		int y=g[x][i];
		dfs(y,x);
		for(int j=1;j<=siz[y];++j){
			for(int k=1;k<=siz[x];++k){
				(tmp[j+k]+=f[x][k]*f[y][j])%=mod;
				if(~j&1) (tmp[k]-=f[x][k]*f[y][j]%mod*js[j])%=mod;
			}
		}
		siz[x]+=siz[y];
		for(int j=1;j<=siz[x];++j) f[x][j]=tmp[j],tmp[j]=0;
	}
}
int main(){
	cin>>n; js[0]=1;
	for(int i=2;i<=n;i+=2) js[i]=js[i-2]*(i-1)%mod;
	for(int i=1,x,y;i<n;++i) cin>>x>>y,g[x].push_back(y),g[y].push_back(x);
	dfs(1,0);
	for(int i=2;i<=n;i+=2) (ans+=js[i]*f[1][i])%=mod;
	cout<<(ans%mod+mod)%mod<<endl;
	return 0;
}