#include <bits/stdc++.h>
using namespace std;
long long binom[4096][4096];
long long dp[4096];
long long num_equivs(int k) {
  if (dp[k]) return dp[k];
  if (k < 2) return 1;
  long long ans = 0;
  for (int i = 0; i < (int)(k); i++)
    ans += (binom[k - 1][i] * num_equivs(k - i - 1)) % 1000000007LL;
  return dp[k] = ans % 1000000007LL;
}
int main() {
  int k;
  scanf("%i", &k);
  for (int i = 0; i < (int)(4096); i++)
    for (int j = 0; j < (int)(i + 1); j++) {
      if (i == 0 || j == i)
        binom[i][j] = 1;
      else
        binom[i][j] = binom[i - 1][j - 1] + binom[i - 1][j];
      binom[i][j] %= 1000000007LL;
    }
  long long ans = 0;
  for (int i = 0; i < (int)(k + 1); i++)
    if (i) {
      ans += binom[k][i] * num_equivs(k - i);
      ans %= 1000000007LL;
    }
  ans %= 1000000007LL;
  printf("%lli\n", ans);
}
