#include <iostream>
using namespace std;
int mul(int * arr, int shift, int N)
{
switch (N)
{
case 1:
return arr[shift];
break;
case 2:
return (arr[shift] * arr[shift + 1]);
break;
default:
int M = N / 2;
return (mul(arr, shift, M) * mul(arr, shift + M, N - M));
}
}
int main()
{
int array[] = {5, 4, 3, 2, 1};
cout << mul(array, 0, 5) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtdWwoaW50ICogYXJyLCBpbnQgc2hpZnQsIGludCBOKQp7CiAgICBzd2l0Y2ggKE4pCiAgICB7CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgICByZXR1cm4gYXJyW3NoaWZ0XTsKICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAyOgogICAgICAgICAgICByZXR1cm4gKGFycltzaGlmdF0gKiBhcnJbc2hpZnQgKyAxXSk7CiAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIGludCBNID0gTiAvIDI7CiAgICAgICAgICAgIHJldHVybiAobXVsKGFyciwgc2hpZnQsIE0pICogbXVsKGFyciwgc2hpZnQgKyBNLCBOIC0gTSkpOwogICAgfQp9CgppbnQgbWFpbigpCnsKCWludCBhcnJheVtdID0gezUsIDQsIDMsIDIsIDF9OwoJCgljb3V0IDw8IG11bChhcnJheSwgMCwgNSkgPDwgZW5kbDsKCQoJcmV0dXJuIDA7Cn0=