def max_score_diff(n, cards): # DPテーブルの初期化 dp = [[0] * n for _ in range(n)] # 初期条件の設定 for i in range(n): dp[i][i] = cards[i] # DPテーブルの更新 for length in range(2, n + 1): # lengthは現在考慮しているカードの枚数 for l in range(n - length + 1): r = l + length - 1 dp[l][r] = max(cards[l] - dp[l + 1][r], cards[r] - dp[l][r - 1]) return dp[0][n - 1] # 入力の読み込み n = int(input()) cards = list(map(int, input().split())) # 結果の出力 print(max_score_diff(n, cards))