using System;
class Prog {
static void Reverse(string s, int index = 0)
{
if (index >= s.Length) return;
Reverse(s, index + 1);
Console.Write(s[index]);
}
static bool Palindrom(string s, int left, int right)
{
if (left >= right) return true;
if (s[left] != s[right]) return false;
return Palindrom(s, left + 1, right - 1);
}
static int Gcd(int a, int b)
{
if (b == 0) return a;
return Gcd(b, a % b);
}
static void Dvoich(int n)
{
if (n == 0) return;
Dvoich(n / 2);
Console.Write(n % 2);
}
//static long Factorial(int n)
//{
// if (n <= 0) return 0;
// return n * Factorial(n - 1);
//}
//static void Down(int n)
//{
// if (n == 0) return;
// Console.Write(n + " "); // База 5 4 3 2 1 : 0
// Down(n - 1);
//}
//static void UpDown(int n)
//{
// if (n == 0) return;
// Console.Write(n + " "); // 5 4 3 2 1 : 0
// UpDown(n - 1);
// Console.Write(n + " "); // 0 1 2 3 4 5
//}
//static int SumDigit1(double x,int n)
//{
// if (n == 0) return 1;
// return n * SumDigit(x,n-1);
//}
//static int SumDigit2(double x,int n)
//{
// if (n == 0) return 1;
// if (n % 2 == 0)
// {
// double half = SumDigit2(x,n/2);
// return (int)(half * half);
// }
// return (int)(x * SumDigit2(x, n - 1));
//}
//static bool Palindrom(string s, int left, int right)
//{
// if (left >= right) return true;
// if (s[left] != s[right]) return false;
// return Palindrom(s, left+1, right-1);
//}
//static int Gcd(int a, int b)
//{
// if (b == 0) return a;
// return Gcd(b, a % b);
//}
//static void Boom(int n)
//{
// Boom(n + 1);
//}
static void Main()
{
//Boom(0);
//
//Console.WriteLine(Palindrom("kek",0,2));
//Console.WriteLine(SumDigit2(2,24));
//Console.WriteLine(SumDigit(1235425346));
//Console.WriteLine(SumDigit(543543637));
//Console.WriteLine(SumDigit(123));
//Down(5);
//Console.WriteLine();
//UpDown(5);
//Console.WriteLine();
//Console.WriteLine();
//Reverse("зоопарк");
Console.WriteLine(Palindrom("kyeyk", 0, 4));
Console.WriteLine(Gcd(24, 18));
Dvoich(6);
Console.WriteLine();
}
//double Step(double x int n) return x * Step(x,n-1)
}