[Python3] Try All Valid K Values
```\nclass Solution:\n    def recoverArray(self, nums):\n        self.n, self.nums = len(nums) // 2, sorted(nums)\n\n        small = self.nums[0]\n        for x
```\nclass Solution:\n    def recoverArray(self, nums):\n        self.n, self.nums = len(nums) // 2, sorted(nums)\n\n        small = self.nums[0]\n        for x in self.nums[1:]:\n            k = x - small # this represents 2 * k from the problem statement\n            if k % 2 or not k: continue\n            temp = self.valid(k)\n            if temp: return temp\n        return []\n\n    def valid(self, k):\n        counts = defaultdict(list)\n        for i in range(len(self.nums) - 1, -1, -1):\n            counts[self.nums[i]].append(i)\n\n        # go through each value from smallest to largest\n        # at each value check for corresponding (val + k)\n        # keep track of which values are used when checking\n        # ahead for the (val + k)\n        # finally add (val + k / 2) if we find the corresponding\n\t\t# (val + k) as it is the value from the original array\n        ans, used = [], [False] * len(self.nums)\n        for i, v in enumerate(self.nums):\n            if used[i]: continue\n            if not counts[v + k]: return []\n            used[counts[v + k].pop()] = True\n            ans.append(v + k // 2)\n        return ans
['Python3']