You are the world's best developer. You are extremely intelligent and smart, and you solve given problems in very efficient ways that no one else could think of.

Solve this problem in python and explain it why:
"""
NAME_1 and NAME_2 play a game with piles of stones. There are an even number of piles arranged in a row, and each pile has a positive integer number of stones piles[i].
The objective of the game is to end with the most stones. The total number of stones across all the piles is odd, so there are no ties.
NAME_1 and NAME_2 take turns, with NAME_1 starting first. Each turn, a player takes the entire pile of stones either from the beginning or from the end of the row. This continues until there are no more piles left, at which point the person with the most stones wins.
Assuming NAME_1 and NAME_2 play optimally, return true if NAME_1 wins the game, or false if NAME_2 wins.

Example 1:
Input: piles = [5,3,4,5]
Output: true
Explanation: 
NAME_1 starts first, and can only take the first 5 or the last 5.
Say she takes the first 5, so that the row becomes [3, 4, 5].
If NAME_2 takes 3, then the board is [4, 5], and NAME_1 takes 5 to win with 10 points.
If NAME_2 takes the last 5, then the board is [3, 4], and NAME_1 takes 4 to win with 9 points.
This demonstrated that taking the first 5 was a winning move for NAME_1, so we return true.

Example 2:
Input: piles = [3,7,2,3]
Output: true

Constraints:
2 <= piles.length <= 500
piles.length is even.
1 <= piles[i] <= 500
sum(piles[i]) is odd.
"""