//  Для заданной последовательности чисел, записанных в строку через пробел во входной текстовый файл
//  создать бинарное дерево поиска (реализация на основе массива). Запросить число с клавиатуры и воспользовавшись свойствами 
//  бинарного дерева поиска ответить на вопрос: есть ли заданное число в последовательности.
//  В случае положительного ответа - удалить этот элемент из дерева. Провести прямой, обратный и внутренний обход дерева. 
//  Массив содержит n элементов, корень - 0-ой элемент, у каждой i-ой вершины есть два потомка: (2i+1)-ая и (2i+2)-ая вершины.


const 
	size = 20; // Размер
	chislo = -1;

type 
	A = array [0..size] of Integer; // Массив элементов

var 
	Tree: A;
	treeLength, N, i: integer; // Длина массива

procedure PrintDown(y: integer; Tree: A); // Прямой обход - checked
begin
	if (y <= treeLength) then
	  if (Tree[y] <> 0) then
	  begin
        writeln(Tree[y]);
        PrintDown(2*y+1, Tree);
        PrintDown(2*y+2, Tree);
	  end;
end;

procedure PrintLex(treeLength: integer; Tree: A); // Обратный
var i : integer;
begin
	if (i < treeLength) then
	  begin
	  	PrintLex((i+1)*2-1, Tree);
        writeln(Tree[i]);
        PrintLex((i+1)*(2+1)-1, Tree);
	  end;
end;

procedure PrintUp(treeLength: integer; Tree: A); // Внутренний 
var i : integer;
begin
	if (i < treeLength) then
	  begin
	  	PrintUp((i+1)*2-1, Tree);
      PrintUp((i+1)*(2+1)-1, Tree);
	  	writeln(Tree[i]);
	  end;
end;


procedure Find(N: integer; Tree: A); // Поиск
var z, l, r : integer;
begin 
	for z := 0 to treeLength do
	if Tree[z] = N then begin
	  l := 2 * z + 1;
	  r := 2 * z + 2;
		if (Tree[l] <>  0) or (Tree[r] <> 0) then begin // Если у удаляемого элемента есть сын, то на место удаляемого элемента ставим его левого сына,
			Tree[z] := l;                                 // на место сына ставим -1 для сохранения структуры
			Tree[l] := chislo;
		end
		else 
		  Tree[z] := chislo;	// Если нет сыновей
  end;
end;


begin
  read(treeLength);
  for i:=0 to treeLength do
  Read(Tree[i]);
  readln(N);
    Find(N, Tree);
    writeln('----');
    PrintDown(0, Tree);
end.