Dynamic programming - linear

Platforms - 3

In older games one can run into the next situation. The hero jumps along the platforms that hang in the air. He must move himself from one side of the screen to the other. When the hero jumps from one platform to the neighboring, he spends |y2 - y1|^2 energy, where y1 and y2 are the heights where these platforms hang. The hero can make a super jump that allows him to skip one platform, but it takes him 3 * |y3 - y1|^2 energy. Symbol ^ here indicated exponentiation.

You are given the heights of the platforms in order from the left side to the right. Find the minimum amount of energy to get from the 1-st (start) platform to the n-th (last).


The first line contains the number of platforms n (2n105). The second line gives n integers - the heights of the platforms, which absolute values are not grater than 4000 by absolute value.


Print one integer - the minimum amount of energy.

Time limit 1 second
Memory limit 128 MiB
Input example #1
1 2 3 30
Output example #1