#include <stdio.h>
#include <stdlib.h>

//no_search、常に-1返すだけ（演習0のやつ）
int no_search(int *a, int n, int x){
	return -1;   //探さないので-1のまま
}

//線形探索、前から順に見るだけ（昇順とか関係ない）
//O(n) → n個ならn回見る
int linear_search(int *a, int n, int x){
	int ret = -1;  //見つからなかった時用
	for(int i = 0; i < n; i++){
		if(a[i] == x){
			ret = i;   //見つかった場所
			break;     //最初の1個だけでOK
		}
	}
	return ret;
}

//二分探索（前提条件として昇順じゃないといけない）
//lef, mid, rig を使う。範囲を半分にしていく。
//O(log n) → 半分ずつ減るので速い
int binary_search(int *a, int n, int x){
	int lef = 0;        //左端
	int rig = n - 1;    //右端

	while(lef <= rig){  //範囲が逆転したら終わり（ここが超大事）
		int mid = (lef + rig) / 2;  //真ん中（小数点切り捨て）

	if(a[mid] == x){
		return mid;  //見つかった
	}
	else if(x < a[mid]){	//真ん中より左なら
		rig = mid - 1;  //左側だけ残す
	}
	else{
		lef = mid + 1;  //右側だけ残す
		}
	}
	return -1;  //見つからなかった
}

int main(void){
	int n, x;
	scanf("%d %d", &n, &x);  //n個の配列、探したいx

	//mallocでn個分確保（int1個のサイズ×n）
	int *a = (int *)malloc(sizeof(int) * n);
	//配列にn個入力
	for(int i = 0; i < n; i++){
		scanf("%d", &a[i]);
	}

	//二分探索（課題1のやつ）
	int ans = binary_search(a, n, x);
	if(ans != -1){
		printf("a[%d] = %d\n", ans, a[ans]);
	}else{
		printf("not found\n");
	}
	free(a);  //mallocしたらfree必須

	return 0;
}