<p>You are given several <code>boxes</code> with different colors represented by different positive numbers.</p> <p>You may experience several rounds to remove boxes until there is no box left. Each time you can choose some continuous boxes with the same color (i.e., composed of <code>k</code> boxes, <code>k >= 1</code>), remove them and get <code>k * k</code> points.</p> <p>Return <em>the maximum points you can get</em>.</p> <p> </p> <p><strong>Example 1:</strong></p> <pre> <strong>Input:</strong> boxes = [1,3,2,2,2,3,4,3,1] <strong>Output:</strong> 23 <strong>Explanation:</strong> [1, 3, 2, 2, 2, 3, 4, 3, 1] ----> [1, 3, 3, 4, 3, 1] (3*3=9 points) ----> [1, 3, 3, 3, 1] (1*1=1 points) ----> [1, 1] (3*3=9 points) ----> [] (2*2=4 points) </pre> <p><strong>Example 2:</strong></p> <pre> <strong>Input:</strong> boxes = [1,1,1] <strong>Output:</strong> 9 </pre> <p><strong>Example 3:</strong></p> <pre> <strong>Input:</strong> boxes = [1] <strong>Output:</strong> 1 </pre> <p> </p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= boxes.length <= 100</code></li> <li><code>1 <= boxes[i] <= 100</code></li> </ul>