#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
typedef long long LL;
const int MOD = 987654321;
const int N = 100005;
bool isPrime[N];
vector<int> Prime;

void init()
{
  memset(isPrime, 0, sizeof(isPrime));
  for (int i = 2; i < N; i++)
  {
    if (isPrime[i])
      continue;
    for (int j = i * 2; j < N; j += i)
    {
      isPrime[j] = true;
    }
  }
  for (int i = 2; i < N; i++)
  {
    if (!isPrime[i])
      Prime.push_back(i);
  }
}

int main()
{
  LL n;
  init();
  while (cin >> n)
  {
    LL ret = 1;
    for (int i = 0; i < Prime.size(); i++)
    {
      LL tmp = 1;
      while (tmp <= n)
      {
        tmp *= Prime[i];
      }
      if (tmp > n)
        tmp /= Prime[i];
      ret *= tmp;
      ret %= MOD;
    }
    cout << ret << endl;
  }
  return 0;
}