using System.Collections.Generic;
public static void Main()
List<int> placementSequence = getPlacementSequence(entrants);
foreach (int matchNumber in placementSequence){
Console.WriteLine(matchNumber);
private static int nextPowerOfTwo(int entrants){
while (entrants > Math.Pow(2, exponent)){
return (int)(Math.Pow(2, exponent));
private static List<int> getPlacementSequence(int entrants){
int requiredBracketCapacity = nextPowerOfTwo(entrants);
int maxStepSize = requiredBracketCapacity/4;
int stepSize = maxStepSize;
List<int> intermediateSequence = new List<int>();
intermediateSequence.Add(0);
for (int i = intermediateSequence.Count-1; i >= 0; i--){
intermediateSequence.Add(intermediateSequence[i] + stepSize);
List<int> finalSequence = new List<int>();
for (int i = 0; i <= intermediateSequence.Count-1; i++){
finalSequence.Add(intermediateSequence[i]);
for (int i = intermediateSequence.Count-1; i >= 0; i--){
finalSequence.Add(intermediateSequence[i]);