#include <iostream> #include <vector> #include <set> #include <queue> #include <algorithm> #include <string> #include <fstream> #include <cctype> #include <iomanip> #include <cmath> #include <cstring> #include <map> #include <bitset> using namespace std; const int MOD = 666013; void euclid(long long a, long long b, long long &x, long long &y) { if(b == 0) { x = 1; y = 0; return; } euclid(b,a%b,x,y); long long aux = x; x = y; y = aux - y*(a/b); } long long getInvers(long long a) { long long x, y; euclid(a,MOD,x,y); if(x < 0) x = MOD + x%MOD; return x; } long long fact[8000001]; int main() { int N; cin>>N; fact[0] = 1; for(int i = 1; i <= 2*N; i++) { fact[i] = fact[i-1] * i; if(fact[i] > MOD) fact[i] = fact[i] %MOD; } //cout<<fact[2*N]<<' '; long long res = 0, x ; for(int i = 2; i <= 2*N; i++) { x = (fact[2*N]*getInvers(fact[2*N-i]))%MOD; //cout<<i<<' '<<x<<'\n'; if(i <= N) x -= (2*fact[N]*getInvers(fact[N-i]))%MOD; //cout<<x<<'\n'; res = (res+x)%MOD; } //res -= fact[2*N]; while(res < 0) res += MOD; cout<<res; return 0; }