#include <cstdio>
#include <vector>

typedef long long LL;
const int Mod = 1000000007;
const int MN = 5005;

int N, coef[MN], Ans;
std::vector<int> G[MN];

int siz[MN], f[MN][MN];
void DFS(int u, int p) {
	siz[u] = 1;
	f[u][1] = 1;
	for (auto v : G[u]) if (v != p) {
		DFS(v, u);
		static int g[MN];
		for (int i = 1; i <= siz[u] + siz[v]; ++i) g[i] = 0;
		for (int i = 1; i <= siz[u]; ++i)
			for (int j = 1; j <= siz[v]; ++j) {
				g[i] = (g[i] - (LL)f[u][i] * f[v][j] % Mod * coef[j]) % Mod;
				g[i + j] = (g[i + j] + (LL)f[u][i] * f[v][j]) % Mod;
			}
		siz[u] += siz[v];
		for (int i = 1; i <= siz[u]; ++i) f[u][i] = g[i];
	}
}

int main() {
	scanf("%d", &N);
	for (int i = 1, x, y; i < N; ++i)
		scanf("%d%d", &x, &y),
		G[x].push_back(y),
		G[y].push_back(x);
	coef[0] = 1;
	for (int i = 2; i <= N; i += 2) coef[i] = (LL)coef[i - 2] * (i - 1) % Mod;
	DFS(1, 0);
	for (int i = 2; i <= N; i += 2) Ans = (Ans + (LL)f[1][i] * coef[i]) % Mod;
	printf("%d\n", (Ans + Mod) % Mod);
	return 0;
}