public int MaxProfit(int[] prices) {
int[] buy = new int[prices.Length];
int[] sell = new int[prices.Length];
for(int i = 1; i < prices.Length; i++) {
buy[i] = Math.Max(buy[i - 1], (i - 2 >= 0 ? sell[i - 2] : 0) - prices[i]);
sell[i] = Math.Max(sell[i - 1], buy[i - 1] + prices[i]);
return sell[prices.Length - 1];