"""有一个数组a[N]顺序存放0~N-1，要求每隔两个数删掉一个数，到末尾时循环至开头继续进行，求最后一个被删掉的
数的原始下标位置。以8个数(N=7)为例:｛0，1，2，3，4，5，6，7｝，0->1->2(删除)->3->4->5(删除)->6->7->0(删除),
如此循环直到最后一个数被删除。
输入描述:
每组数据为一行一个整数n(小于等于1000)，为数组成员数,如果大于1000，则对a[999]进行计算。
输出描述:
一行输出最后一个被删掉的数的原始下标位置。
输入例子1:
8
输出例子1:
6
"""

while True:
    try:
        n = int(input())
    except:
        break
    if n > 1000:
        n = 999
    a = [i for i in range(n)]
    b = a[:]
    i = 2
    flag = 0
    while len(b) > 0:
        b.remove(a[i])
        flag = a[i]
        i += 3
        # 如果要删除的数下标超过当前下标
        if i >= len(a):
            # 先减去当前列表的长度
            i = i - len(a)
            a = b[:]
            # 减去数组长度后依然大于数组的界限，此时列表长度为1或者2
            if i >= len(a):
                i = 0

    print(flag)
