Buggy python submission (verdict: Time Limit Exceeded):
N= int(input())

# queryを投げて空の時の処理をする関数
def query1(i):
  print(i)
  tmp = input()
  if tmp[0] == 'V':
    exit()
  return r

# 最初に始点を探索
z = query1(0)
  
# 矛盾していないか判定する関数, Falseなら矛盾
def judge1(m):
  s = query1(m)
  if m % 2 == 0: # 偶数なら0番目と同じなら矛盾しない
    return z==s
  else:
    return z!=s
  
# 二分探索する
l = 0
r = N # N-1にするとN-1が探索されずにwhileを抜けてしまう
while r - l > 1:
  m = (l + r) // 2
  if judge1(m):
    # l~mまでが矛盾しない
    l = m
  else:
    r = m

Fixed submission:
N= int(input())

# queryを投げて空の時の処理をする関数
def query1(i):
  print(i)
  tmp = input()
  if tmp[0] == 'V':
    exit()
  return tmp

# 最初に始点を探索
z = query1(0)
  
# 矛盾していないか判定する関数, Falseなら矛盾
def judge1(m):
  s = query1(m)
  if m % 2 == 0: # 偶数なら0番目と同じなら矛盾しない
    return z==s
  else:
    return z!=s
  
# 二分探索する
l = 0
r = N # N-1にするとN-1が探索されずにwhileを抜けてしまう
while r - l > 1:
  m = (l + r) // 2
  if judge1(m):
    # l~mまでが矛盾しない
    l = m
  else:
    r = m

Buggy python submission (verdict: Time Limit Exceeded):
N= int(input())

# queryを投げて空の時の処理をする関数
def query(i):
  print(i)
  tmp = input()
  if tmp[0] == 'V':
    exit()
  else:
    return r

# 最初に始点を探索
z = query(0)
  
# 矛盾していないか判定する関数, Falseなら矛盾
def judge(m):
  s = query(m)
  if m % 2 == 0: # 偶数なら0番目と同じなら矛盾しない
    return z == s
  else:
    return z != s
  
# 二分探索する
l = 0
r = N # N-1にするとN-1が探索されずにwhileを抜けてしまう
while r - l > 1:
  m = (l + r) // 2
  if judge(m):
    # l~mまでが矛盾しない
    l = m
  else:
    r = m

Fixed submission:
N= int(input())

# queryを投げて空の時の処理をする関数
def query1(i):
  print(i)
  tmp = input()
  if tmp[0] == 'V':
    exit()
  return tmp

# 最初に始点を探索
z = query1(0)
  
# 矛盾していないか判定する関数, Falseなら矛盾
def judge1(m):
  s = query1(m)
  if m % 2 == 0: # 偶数なら0番目と同じなら矛盾しない
    return z==s
  else:
    return z!=s
  
# 二分探索する
l = 0
r = N # N-1にするとN-1が探索されずにwhileを抜けてしまう
while r - l > 1:
  m = (l + r) // 2
  if judge1(m):
    # l~mまでが矛盾しない
    l = m
  else:
    r = m

Buggy python submission (verdict: Time Limit Exceeded):
N= int(input())
# queryを投げて空の時の処理をする関数
def query(i):
  print(i)
  tmp = input()
  if tmp == 'Vacant':
    exit()
  else:
    return r

# 最初に始点を探索
z = query(0)
  
# 矛盾していないか判定する関数, Falseなら矛盾
def judge(m):
  s = query(m)
  if m % 2 == 0: # 偶数なら0番目と同じなら矛盾しない
    return z == s
  else:
    return z != s
  
# 二分探索する
l = 0
r = N # N-1にするとN-1が探索されずにwhileを抜けてしまう
while r - l > 1:
  m = (l + r) // 2
  if judge(m):
    # l~mまでが矛盾しない
    l = m
  else:
    r = m

Fixed submission:
N= int(input())

# queryを投げて空の時の処理をする関数
def query1(i):
  print(i)
  tmp = input()
  if tmp[0] == 'V':
    exit()
  return tmp

# 最初に始点を探索
z = query1(0)
  
# 矛盾していないか判定する関数, Falseなら矛盾
def judge1(m):
  s = query1(m)
  if m % 2 == 0: # 偶数なら0番目と同じなら矛盾しない
    return z==s
  else:
    return z!=s
  
# 二分探索する
l = 0
r = N # N-1にするとN-1が探索されずにwhileを抜けてしまう
while r - l > 1:
  m = (l + r) // 2
  if judge1(m):
    # l~mまでが矛盾しない
    l = m
  else:
    r = m

Buggy python submission (verdict: Time Limit Exceeded):
N= int(input())

# まず二分探索の始点・終点を調べる
print(0)
l_s = input()
if l_s == 'vacant': exit()

print(N-1)
r_s = input()
if r_s == 'vacant': exit()

# 二分探索する
l = 0
r = N-1

while r - l > 1:
  c = (l + r) // 2
  print(c)
  s = input()
  if s == 'vacant':
    exit()
  elif ((l-c) % 2 == 1) ^ (seat[l] == seat[c]):
    r = c-1
  elif ((r-c) % 2 == 1) ^ (seat[r] == seat[c]):
    l = c+1
    
# loopを抜ける可能性あり
print(l)
s = input()
if s == 'vacant': exit()

Fixed submission:
N= int(input())

# queryを投げて空の時の処理をする関数
def query1(i):
  print(i)
  tmp = input()
  if tmp[0] == 'V':
    exit()
  return tmp

# 最初に始点を探索
z = query1(0)
  
# 矛盾していないか判定する関数, Falseなら矛盾
def judge1(m):
  s = query1(m)
  if m % 2 == 0: # 偶数なら0番目と同じなら矛盾しない
    return z==s
  else:
    return z!=s
  
# 二分探索する
l = 0
r = N # N-1にするとN-1が探索されずにwhileを抜けてしまう
while r - l > 1:
  m = (l + r) // 2
  if judge1(m):
    # l~mまでが矛盾しない
    l = m
  else:
    r = m