#include <bits/stdc++.h>
#define mod 1000000007
using namespace std;

inline int read() {
    int x = 0 ; char c = getchar(); bool f = 0;
    while(c < '0' || c > '9') f |= (c=='-') , c = getchar();
    while(c >= '0' && c <= '9') x = x * 10 + (c^48) , c = getchar();
    return f ? -x : x;
}

vector<int> e[5003];
void add(int f, int t) { e[f].push_back(t), e[t].push_back(f); }
int f[5003][5003], g[5003], tmp[5003];
int n, sz[5003];

void dfs(int u, int fa) {
    f[u][sz[u] = 1] = 1;
    for (int i = 0, v; i < e[u].size(); ++i) {
        if ((v = e[u][i]) == fa) continue;
        dfs(v, u);
        for (int i = 1; i <= sz[u] + sz[v]; ++i) tmp[i] = 0;
        for (int i = 1; i <= sz[u]; ++i)
            for (int j = 0; j <= sz[v]; ++j)
                (tmp[i + j] += 1ll * f[u][i] * f[v][j] % mod) %= mod;
        for (int i = 1; i <= sz[u] + sz[v]; ++i) f[u][i] = tmp[i];
        sz[u] += sz[v];
    }
    for (int i = 2; i <= sz[u]; i += 2)
        (f[u][0] += mod - 1ll * f[u][i] * g[i] % mod) %= mod;
}

int main() {
    g[0] = 1, n = read();
    for (int i = 2; i <= n; i += 2) g[i] = 1ll * g[i - 2] * (i - 1) % mod;
    for (int i = 1; i < n; ++i) add(read(), read());
    dfs(1, 0);
    printf("%d\n", mod - f[1][0]);
    return 0;
}