N = gets.to_i
a = gets.split.map(&:to_i)
dp = N.times.map{[0]*(N)}
N.times do |i|
	dp[i][i] = a[i]
end
1.upto(N-1) do |i|
	(N-i).times do |j|
		v1 = a[j] - dp[j+1][i+j]
		v2 = a[i+j] - dp[j][i+j-1]
		dp[j][i+j] = v1 > v2 ? v1 : v2
	end
end
p dp[0][N-1]
