static void Main() { int n = int.Parse(Console.ReadLine()); var swaps = Console.ReadLine() .Split(' ') .Select(int.Parse) .ToArray(); var links = new Link[n + 1]; for (int i = 1; i <= n; ++i) { links[i] = new Link(links[i - 1], i); } var leftEnd = links[1]; var rightEnd = links[n]; foreach (int x in swaps) { var middle = links[x]; var newRight = middle.Left; var newLeft = middle.Right; Link.Detach(middle); Link.Attach(rightEnd, middle); Link.Attach(middle, leftEnd); leftEnd = newLeft ?? middle; rightEnd = newRight ?? middle; } var numbers = new int[n]; for (int i = 0; i < n; ++i) { numbers[i] = leftEnd.Value; leftEnd = leftEnd.Right; } Console.WriteLine(string.Join(" ", numbers)); }