using System;
 
public class Test
{
 
    public static int Bsearch(int[] m, int left, int right, int item)
    {
       if (left > right)
           return -1; 
        int found = left + (right - left) / 2;
        if (m[found] > item) 
            return Bsearch(m, left, found - 1, item);
        else if (m[found] < item) 
            return Bsearch(m, found + 1, right, item);
        else 
            return m[found];
    }    
 
public static void Main()
{
  int[] massive = new int[20];
  for (int i = 0; i<massive.Length; i++)
        {
            massive[i] = i;
        }
        int result = Bsearch(massive, 0, massive.Length - 1, -2);
        Console.WriteLine("{0} has found", result);
        result = Bsearch(massive, 0, massive.Length - 1, 3);
        Console.WriteLine("{0} has found", result);
        result = Bsearch(massive, 0, massive.Length - 1, 30);
        Console.WriteLine("{0} has found", result);
        Console.ReadKey();
 
	}
}
				dXNpbmcgU3lzdGVtOwoKcHVibGljIGNsYXNzIFRlc3QKewoJCiAgICBwdWJsaWMgc3RhdGljIGludCBCc2VhcmNoKGludFtdIG0sIGludCBsZWZ0LCBpbnQgcmlnaHQsIGludCBpdGVtKQogICAgewogICAgICAgaWYgKGxlZnQgPiByaWdodCkKICAgICAgICAgICByZXR1cm4gLTE7IAogICAgICAgIGludCBmb3VuZCA9IGxlZnQgKyAocmlnaHQgLSBsZWZ0KSAvIDI7CiAgICAgICAgaWYgKG1bZm91bmRdID4gaXRlbSkgCiAgICAgICAgICAgIHJldHVybiBCc2VhcmNoKG0sIGxlZnQsIGZvdW5kIC0gMSwgaXRlbSk7CiAgICAgICAgZWxzZSBpZiAobVtmb3VuZF0gPCBpdGVtKSAKICAgICAgICAgICAgcmV0dXJuIEJzZWFyY2gobSwgZm91bmQgKyAxLCByaWdodCwgaXRlbSk7CiAgICAgICAgZWxzZSAKICAgICAgICAgICAgcmV0dXJuIG1bZm91bmRdOwogICAgfSAgICAKICAgICAgICAKcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQp7CiAgaW50W10gbWFzc2l2ZSA9IG5ldyBpbnRbMjBdOwogIGZvciAoaW50IGkgPSAwOyBpPG1hc3NpdmUuTGVuZ3RoOyBpKyspCiAgICAgICAgewogICAgICAgICAgICBtYXNzaXZlW2ldID0gaTsKICAgICAgICB9CiAgICAgICAgaW50IHJlc3VsdCA9IEJzZWFyY2gobWFzc2l2ZSwgMCwgbWFzc2l2ZS5MZW5ndGggLSAxLCAtMik7CiAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoInswfSBoYXMgZm91bmQiLCByZXN1bHQpOwogICAgICAgIHJlc3VsdCA9IEJzZWFyY2gobWFzc2l2ZSwgMCwgbWFzc2l2ZS5MZW5ndGggLSAxLCAzKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9IGhhcyBmb3VuZCIsIHJlc3VsdCk7CiAgICAgICAgcmVzdWx0ID0gQnNlYXJjaChtYXNzaXZlLCAwLCBtYXNzaXZlLkxlbmd0aCAtIDEsIDMwKTsKICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiezB9IGhhcyBmb3VuZCIsIHJlc3VsdCk7CiAgICAgICAgQ29uc29sZS5SZWFkS2V5KCk7CiAgICAgICAgCgl9Cn0=