n = gets.to_i pre_x = -1 pre_y = -1 dp = Hash.new(0) same = 0 n.times do x,y = gets.split.map(&:to_i) ndp = Hash.new(0) # xi, yi の順番に置くとき if x == pre_x ndp[y] = [dp[pre_x] + x, dp[pre_y]].max elsif x == pre_y ndp[y] = [dp[pre_y] + x, dp[pre_x]].max else ndp[y] = [dp[pre_x], dp[pre_y]].max end # yi, xi の順番に置くとき if y == pre_x ndp[x] = [dp[pre_x] + y, dp[pre_y]].max elsif y == pre_y ndp[x] = [dp[pre_y] + y, dp[pre_x]].max else ndp[x] = [dp[pre_x], dp[pre_y]].max end dp = ndp pre_x = x pre_y = y same += x if x == y end puts [dp[pre_x], dp[pre_y]].max + same