Two-Pointers Approach || Easy to Understand
Solution:\n\nThe given problem can be solved using two pointer technique.\n\nFirst, sort the given array.\n\nThen, we can consider each element in the array as 
**Solution:**\n\nThe given problem can be solved using two pointer technique.\n\nFirst, sort the given array.\n\nThen, we can consider each element in the array as the minimum element of a subsequence, and find the maximum element that can be included in the subsequence such that the sum of the minimum and maximum element is less than or equal to the target. We can use a pointer for this.\n\nFor each minimum element, we can calculate the number of subsequences that can be formed using the maximum element pointer. This can be calculated as 2^(j-i), where i is the index of the minimum element and j is the index of the maximum element.\n\nFinally, we can add up the number of subsequences for each minimum element and return the result modulo 10^9 + 7.\n\nHere\'s the implementation of the above approach:\n\n````\nclass Solution:\n\tdef numSubseq(self, nums: List[int], target: int) -> int:\n        nums.sort()\n        i, j = 0, len(nums)-1\n        ans = 0\n        while i <= j:\n            if nums[i] + nums[j] <= target:\n                ans += pow(2, j-i, 10**9+7)\n                i += 1\n            else:\n                j -= 1\n        return ans % (10**9+7)\n````
['Two Pointers', 'Python3']