JAVA SOLUTION
Intuition\n Describe your first thoughts on how to solve this problem. \n\n# Approach\n Describe your approach to solving the problem. \n\n# Complexity\n- Time 
# Intuition\n<!-- Describe your first thoughts on how to solve this problem. -->\n\n# Approach\n<!-- Describe your approach to solving the problem. -->\n\n# Complexity\n- Time complexity:\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity:\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\n    public int maxSelectedElements(int[] nums) {\n        Arrays.sort(nums);\n        int n = nums.length;\n        int[][] dp = new int[n][2];\n        dp[0][0] = 1;\n        dp[0][1] = 1;\n        for(int i=1;i<n;i++) {\n            dp[i][0] = nums[i] == nums[i-1] + 1 ? 1 + dp[i-1][0] :\n                (nums[i] == nums[i-1] + 2 ? 1 + dp[i-1][1] : \n                (nums[i] == nums[i-1]) ? dp[i-1][0] : 1);\n            dp[i][1] = nums[i] == nums[i-1] ? 1 + dp[i-1][0] :\n                 (nums[i] == nums[i-1] + 1 ? 1 + dp[i-1][1] : 1);\n            if(nums[i] == nums[i-1]) {\n                dp[i][0] = dp[i-1][0];\n            }\n        }\n\n        int ans = 0;\n        for(int[] d: dp) {\n            ans = Math.max(ans, Math.max(d[0], d[1]));\n        }\n        return ans;\n    }\n}\n```
['Java']