Simple Python Solution
\nfrom collections import Counter\n\nclass Solution:\n    def findOriginalArray(self, changed: List[int], target : int):\n        changed.sort()\n        c1,c2,
```\nfrom collections import Counter\n\nclass Solution:\n    def findOriginalArray(self, changed: List[int], target : int):\n        changed.sort()\n        c1,c2,length = 0,0,len(changed)\n        count_map = Counter(changed)\n        original = []\n        if length%2 :\n            return original\n        while (c1 != length//2 and c2 < length):\n            if count_map[changed[c2]] > 0 :\n                count_map[changed[c2]] -= 1\n                if count_map[changed[c2] + 2*target] > 0:\n                    original.append(changed[c2])\n                    count_map[changed[c2] + 2*target] -= 1\n                    c1 += 1\n                else:\n                    return []\n            elif (c2 == length-1):\n                return []\n            c2 += 1 \n        return original\n    def getk(self,nums: List[int], k):\n        nums_cache = defaultdict(bool)\n        for i in nums:\n            nums_cache[i] = True\n        for i in nums[1:]:\n            k = (i-nums[0])//2 if i != nums[0] and (i-nums[0])%2==0 else k+1\n            print(k)\n            if nums_cache[nums[-1] - 2*k]:\n                break\n        return k\n    \n    \n    def recoverArray(self, nums: List[int]) -> List[int]:\n        nums.sort()\n        k = 1\n        original = []\n        nums_cache = defaultdict(bool)\n        for i in nums:\n            nums_cache[i] = True\n        while(len(original) == 0):\n            for i in nums[1:]:\n                k = (i-nums[0])//2 if (i - nums[0]) >= 2 else k+1\n                if nums_cache[nums[-1] - 2*k] and nums_cache[nums[0] + 2*k]:\n                    original = self.findOriginalArray(nums, k)\n                if len(original):\n                    break\n        return map(lambda x:x+k, original)\n```
[]