int reverse(int x) {
int res = 0;
if (numeric_limits<int>::min() == x) return 0;
while(abs(x) > 0)
{
if (numeric_limits<int>::max() / 10 < res) return 0;
if (numeric_limits<int>::min() / 10 > res) return 0;
res *= 10;
res += x % 10;
x /= 10;
}
return res;
}