1class Solution {2public:3bool isPossible(vector<int> &nums) {4priority_queue<int, vector<int>, greater<int>> pq;5unordered_map<int, int> um;6for (int &num : nums) {7pq.push(num);8um[num]++;9}10queue<int> q;11int count = 0, prev;12while (!pq.empty()) {13if (count == 0) {14prev = pq.top();15pq.pop();16count++;17} else if (pq.top() == prev + 1) {18if (um[pq.top()] >= um[prev]) {19um[prev]--;20pq.pop();21prev += 1;22count++;23} else if (um[pq.top()] < um[prev]) {24um[prev]--;25if (count <= 2) return false;26while (!q.empty()) {27pq.push(q.front());28q.pop();29}30count = 0;31}32} else if (pq.top() == prev) {33q.push(pq.top());34pq.pop();35if (pq.empty()) {36if (count <= 2) return false;37while (!q.empty()) {38pq.push(q.front());39q.pop();40}41count = 0;42}43} else if (pq.top() > prev + 1) {44if (count <= 2) return false;4546while (!q.empty()) {47pq.push(q.front());48q.pop();49}50count = 0;51}52}53if (count > 0 && count <= 2) return false;54return true;55}56};