#include <iostream>
 
class Solution {
public:
    int findLHS(std::vector<int>& nums) {
        int LHS = 0;
 
        for (int i = 0; i < nums.size() - 1; i++) {
            int n = 0, p = 0;
            bool encounteredPN1 = false;
 
            for (int j = i + 1; j < nums.size(); j++) {
                // std::cout << "nums[j] = " << nums[j] << " | nums[i] - 1 = " << nums[i] - 1 << " | nums[i] + 1 = " << nums[i] + 1 << "\n";
                if (nums[j] == nums[i] - 1) {
                    n++;
                    encounteredPN1 = true;
                }
                if (nums[j] == nums[i] + 1) {
                    p++;
                    encounteredPN1 = true;
                }
                if (nums[j] == nums[i]) {
                    n++; p++;
                }
            }
 
            if (!encounteredPN1) {
                // std::cout << "FLAG NOT ARMED. RESET n = 0, p = 0\n";
                n = 0; p = 0;
            }
 
            // std::cout << "n = " << n << ", p = " << p << "\n";
 
            int len = (n > p) ? n : p;
            // std::cout << "len = " << len << "\n";
            if (len != 0 && len + 1 > LHS) LHS = len + 1;
            // std::cout << "LHS = " << LHS << "\n---------\n";
        }
 
        return LHS;
    }
};