#include <iostream>
#include <algorithm> // next_permutation
#include <iomanip>
#include <cmath>
#include <vector>
#include <sstream>
#include <string>
#include <cstdio>
#include <stack>
#include <queue>
#include <list>
#include <numeric> //accumulate
//#include <unordered_map> //ハッシュ関数
#include <fstream> //ifstream, ofstream

//#define NDEBUG //NDEBUGが#include <cassert>より前に定義されている場合assertは無効になる。提出時はNDEBUGを定義しておいたほうがいいかも
#include <cassert> //assert


using namespace std;

//デバッグ時はTESTを定義する。本番時はこの行をコメントアウトする
#define TEST //*******************************************************************************************************************************************
//そうすることで、以下に定義する、デバッグ時にのみ標準出力する、doutコマンドが実現できる。本番時はダミーストリームに出力
//ただダミーストリームに出力する処理も結構CPU時間食うようなので、TLEを引き起こす原因になる可能性には注意                           ・・・もしかしてcerrを使ったほうがいいのかな？？？
#ifdef TEST
#define dout cout
#define din cin
#else
stringstream dummy; //デバッグ時のdoutコマンドのダミー出力先
#define dout dummy.str(""); dummy.clear(stringstream::goodbit); dummy //dummyを毎回リセットしておかないとメモリ溢れちゃう。
//どうせ表示しないからgoodbitしなくていいけど、表示する場合はこれしておかないとバグるらしいので、勉強のために。詳しくは http://d.hatena.ne.jp/linden/20060427/p1
#endif

//標準出力先をテキストファイルにしたい場合はOUTPUTFILEを定義する。本番時はこの行をコメントアウトする
//#define OUTPUTFILE "output.txt" //*******************************************************************************************************************************************
#ifdef OUTPUTFILE
#define dout outputfile //というのはTLE問題でどうせdoutを全部コメントアウトしなくちゃいけなくなるので上記方式は却下して、代わりに出力先を標準出力からファイルに切り替えできるようにする
ofstream outputfile(OUTPUTFILE);
#define OutputFilePath "/Users/Nag/Documents/Prgm/Test/DerivedData/Test/Build/Products/Debug/output.txt"
#endif

//標準入力元をテキストファイルにしたい場合はINPUTFROMTEXTFILEを定義する。本番時はこの行をコメントアウトする
//#define INPUTFILE "input.txt" //*******************************************************************************************************************************************
#ifdef INPUTFILE
#define din inputfile
ifstream inputfile(INPUTFILE);
#endif


#define disp(A) dout << #A << " = " << (A) << endl
#define disP(A) dout << setw(3) << (A) << " " // << setw(3) をたまに入れるかも
#define rep(i,a,n) for(int (i)=(a); (i)<(n); (i)++)
#define dispAll(A,n) dout << #A << " = "; rep(j, 0, (n)) {disP(A[j]);} dout << endl

typedef pair<int,int> pii;
typedef vector<int> vi;
typedef unsigned long long ll;


const int INF = 2e9-1;
//#define N_MAX 1000000 //1e5
//#define K_MAX 1073741824-1 //2^30-1
//
//int dp[N_MAX+1][10]; //i番目以降の非負整数を使って、費用がj以下となるときの最大値
//int cost[N_MAX];
//int value[N_MAX];


int main() {
    int N; din >> N;
//    int K; din >> K;
//    
//    //read input data
//    rep(i,0,N) {
//        din >> cost[i] >> value[i];
//    }
//    
//    //initialize
//    rep(i, 0, N) {
//        rep(j,0,K+1) {
//            dp[i][j] = -1;
//        }
//    }
    
    ll a = 0, b, c;
    for(b=1; b<=3500; b++) {
        for(c=1; c<=3500; c++) {
            if( 4*b*c-N*b-N*c <= 0 ) continue;
            
            if( N*b*c % (4*b*c-N*b-N*c) == 0 ) {
                a = N*b*c / (4*b*c-N*b-N*c);
                break;
            }
        }
        
        if(a>0) break;
        
    }
    
    dout << a << " " << b << " " << c << endl;
//    disp(N*b*c);
//    disp((4*b*c-N*b-N*c));
//    disp(N*b*c / (4*b*c-N*b-N*c));
    
    
    
    
#ifdef INPUTFILE
    inputfile.close();
#endif
    
#ifdef OUTPUTFILE
    outputfile.close();
    cout << "\"" << OutputFilePath << "\"" << endl;
#endif
    
    return 0;
}

Measured memory_bytes: 256