N, K = gets.split(" ").map{|s| s.to_i} a = gets.split(" ").map{|s| s.to_i} b = gets.split(" ").map{|s| s.to_i} dp = Array.new(N+1) {Array.new(K+1) {Array.new(2)}} 0.upto(K) {|j| dp[0][j][0] = -Float::INFINITY dp[0][j][1] = "" } dp[0][0][0] = 0 1.upto(N) {|i| 0.upto(K) {|j| dp[i][j][0] = -Float::INFINITY dp[i][j][1] = "" } 0.upto([i,K].min) {|j| dp[i][j] = [j > 0 ? [dp[i-1][j-1][0] + a[i-1], dp[i-1][j-1][1] + "A"] : [-Float::INFINITY, ""], [dp[i-1][j][0] + b[i-1], dp[i-1][j][1] + "B"]].max } } puts dp[N][K][1]