﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


static class DeBruijn
{
    static int[] _positions = 
    {
        0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
        31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
    };

    public static int Position(int number)
    {
        uint res = (uint)((ulong)(number & -number) * 0x077CB531UL) >> 27;
        return _positions[res];
    }
}

