<p>You are given an integer array <code>nums</code> and an integer <code>k</code>. Append <code>k</code> <strong>unique positive</strong> integers that do <strong>not</strong> appear in <code>nums</code> to <code>nums</code> such that the resulting total sum is <strong>minimum</strong>.</p>

<p>Return<em> the sum of the</em> <code>k</code> <em>integers appended to</em> <code>nums</code>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> nums = [1,4,25,10,25], k = 2
<strong>Output:</strong> 5
<strong>Explanation:</strong> The two unique positive integers that do not appear in nums which we append are 2 and 3.
The resulting sum of nums is 1 + 4 + 25 + 10 + 25 + 2 + 3 = 70, which is the minimum.
The sum of the two integers appended is 2 + 3 = 5, so we return 5.</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> nums = [5,6], k = 6
<strong>Output:</strong> 25
<strong>Explanation:</strong> The six unique positive integers that do not appear in nums which we append are 1, 2, 3, 4, 7, and 8.
The resulting sum of nums is 5 + 6 + 1 + 2 + 3 + 4 + 7 + 8 = 36, which is the minimum. 
The sum of the six integers appended is 1 + 2 + 3 + 4 + 7 + 8 = 25, so we return 25.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= nums.length &lt;= 10<sup>5</sup></code></li>
	<li><code>1 &lt;= nums[i] &lt;= 10<sup>9</sup></code></li>
	<li><code>1 &lt;= k &lt;= 10<sup>8</sup></code></li>
</ul>

class Solution:
    def minimalKSum(self, nums: List[int], k: int) -> int:
        
        # nums = sorted(nums)

        # cnt = 0
        # curr = 1
        # idx = 0
        # addsum = 0
        # while idx < len(nums) or cnt < k:
        #     if idx >= len(nums):
        #         addsum += curr
        #         cnt += 1
        #         curr += 1
        #     elif curr < nums[idx] and cnt < k:
        #         addsum += curr
        #         cnt += 1
        #         curr += 1
        #     else:
        #         curr = nums[idx] + 1
        #         idx += 1
        

        # return addsum

        # nums = set(nums)
        # cnt = 0
        # curr = 1
        # addsum = 0
        # while cnt < k:
        #     print(curr)
        #     if curr not in nums:
        #         addsum += curr
        #         curr += 1
        #         cnt += 1
        #     else:
        #         curr += 1
        
        # return addsum

        nums = list(set(nums))
        ans = int(k*(k+1)/2)
        cnt = 0
        removed = []
        for i in range(len(nums)):
            if nums[i] <= k:
                ans = ans - nums[i]
                cnt += 1
                removed.append(nums[i])
        
        print(cnt, ans, removed)
        nums = set(nums)
        add_cnt = 0
        k = k + 1
        while add_cnt < cnt:
            if k not in nums:
                ans += k
                add_cnt += 1
                k = k + 1
            else:
                k = k + 1
        
        return ans


            

548