#include using namespace std; int N, C, K; int max( int a, int b ) // perchè questo funziona? come sono disposti in realtà? { return a > b ? a : b; } int calcola_ricorsivo( int n ) // conto le possibilita' seguendo il procedimento { int temp; if (n==0) { // caso base: un modo di mettere 0 persone return 1; } if (n % 2 == 0) { // caso pari temp = calcola_ricorsivo( n/2 ); return 2*temp*temp; } else { // caso dispari temp = calcola_ricorsivo( (n-1)/2 ); return n*temp*temp; } } int main() { cin >> N >> C >> K; // leggo l'input cout << max(C,K) << " " << calcola_ricorsivo(N) << endl; // stampo l'output return 0; }