#include <iostream>
#include <vector>
#include <set>
#include <algorithm>

using namespace std;

class Solution {
public:
    int longestSubarray(vector<int>& nums, int limit) {
        int n = nums.size();
        int i = 0;
        int j = 0;

        multiset<int> st;

        int ans = 0;

        while (j < n) {
            st.insert(nums[j]);
            while (*st.rbegin() - *st.begin() > limit) {
                st.erase(st.find(nums[i]));
                i++;
            }

            ans = max(ans, j - i + 1);
            j++;
        }

        return ans;
    }
};

int main() {
    Solution sol;
    
    // Example test case
    vector<int> nums = {8, 2, 4, 7};
    int limit = 4;

    int result = sol.longestSubarray(nums, limit);
    cout << result << "\n";

    return 0;
}