#include <stdio.h>

long i, iN;
long long iTot;
long long aiFact[8];
long abHor[7][7], abVert[7][7];

void latin_square(long i, long j) {
   long k;
   
   if (j >= iN) {
      ++iTot;
   } else {
      for (k= 0; k< iN; ++k) {
         if ((!abVert[i][k]) && (!abHor[j][k])) {
            abVert[i][k] = abHor[j][k] = 1;
            if (i+1 < iN) {
               latin_square(i+1, j);
            } else {
               latin_square(1, j+1);
            }
            abVert[i][k] = abHor[j][k] = 0;
         }
      }
   }
}

int main (void) {
   scanf("%d", &iN);
   aiFact[0] = 1;
   for (i = 1; i<= iN; ++i) {
      aiFact[i] = i*aiFact[i-1];
   }
   for (i = 0; i< iN; ++i) {
      abHor[0][i] = abHor[i][i] = 1;
      abVert[0][i]= abVert[i][i]= 1;
   }
   iTot = 0;
   latin_square(1, 1);
   printf("%I64d %I64d\n", iTot, iTot*aiFact[iN]*aiFact[iN-1]);

   return(0);
}
