program majority_of_balls
  implicit none
  integer :: n, f, a(200) = 0, i, j, l = 1, r, m
  character(32) :: fmt = 'i0'
  character(100) :: s = ''
  read(5,*) n
  if (n > 1) then
    write(fmt,*) n - 1
    fmt = 'i0,' // trim(fmt) // '(x,i0)'
  end if
  f = query1(1)
  r = n + 1
  do while (r - l > 1)
    m = (l + r) / 2
    if (query1(m) == f) then
      l = m
    else
      r = m
    end if
  end do
  a(l) = f
  a(l + n) = -f
  do i = 1, 2 * n
    if (i == l .or. i == l + n) cycle
    if (l < i .and. i < l + n) then
      a(i) = query2(i, l + n + 1)
    else
      a(i) = query2(i, l + 1)
    end if
  end do
  do i = 1, 2 * n
    s(i:i) = merge('R', 'B', a(i) == 1)
  end do
  write(6,'("! ",a)') trim(s)
  flush(6)
contains
  integer function idx(i) result(res)
    integer, intent(in) :: i
    res = merge(i - 2 * n, i, i > 2 * n)
  end
  integer function query1(q) result(res)
    integer, intent(in) :: q
    integer :: i
    character(1) :: judge
    write(6,'("? "'//trim(fmt)//')') [(idx(i + q), i = 0, n - 1)]
    flush(6)
    read(5,*) judge
    res = merge(1, -1, judge == 'R')
  end
  integer function query2(q1, q2) result(res)
    integer, intent(in) :: q1, q2
    integer :: i
    character(1) :: judge
    write(6,'("? "'//trim(fmt)//')') [q1, (idx(i + q2), i = 0, n - 2)]
    flush(6)
    read(5,*) judge
    res = merge(1, -1, judge == 'R')
  end
end program majority_of_balls