# import sys # input = sys.stdin.readline # import pypyjit # pypyjit.set_param('max_unroll_recursion=-1') def mp():return map(int,input().split()) def lmp():return list(map(int,input().split())) def mps(A):return [tuple(map(int, input().split())) for _ in range(A)] def stoi(LIST):return list(map(int,LIST)) def itos(LIST):return list(map(str,LIST)) def bitA(X,A):return X & 1<= 0: bunsi = md[u-2*jump] bunbo = (md[u-3*jump]*md[jump]) ans += bunsi*pow(bunbo,mod-2,mod) step -= 3 jump += 1 ans %= mod #print(ans) print(ans) # jump = 1 # ans = 1 # now = 1 # while step >= 0: # bunsi = (step + 1) * (step + 2) * (step + 3) # bunbo = jump * (step + jump + 1) * (step + jump + 2) # now *= bunsi * pow(bunbo, mod - 2, mod) # now %= mod # ans += now # ans %= mod # step -= 3 # jump += 1 # print(ans % mod) n,x,y = mp() md = [1] for i in range(1,n+5): md.append(md[-1]*i%mod) if x > y:x,y = y,x if x != 1 and y != n: if y-x == 1: print(0) else: calc(y-1-(x+1)) else:calc(y-x)