#include<bits/stdc++.h>
using namespace std;

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        const int number_limit = 2*1e4+10;
        int numbers[number_limit] = {};
        const int shift = 1e4;
        for(int i = 0 ; i < nums.size() ; i++){
            numbers[nums[i]+shift]++;
        }
        int sum = 0;
        int cur = 0;
        for(int i = 0 ; i < number_limit ;i++){
            if(numbers[i]>=2){
                nums[cur++] = i-shift;
                nums[cur++] = i-shift;
                sum += 2;
            }else if(numbers[i] == 1){
                nums[cur++] = i-shift;
                sum += 1;
            }
        }
        return sum;
    }
    int better(vector<int>& nums){
        int i = 0 ; 
        for(int ele: nums){
            if( i==0 || i==1 || nums[i-2]!=ele){
                nums[i] = ele;
                i++;
            }
        }
        return i;
    }
};

int main(){

    Solution sol;
    vector<int> ex1 = {1,1,1,2,2,3};
    // int k = sol.removeDuplicates(ex1);
    int k = sol.better(ex1);
    cout<<k<<endl;
    for(int i = 0 ; i < k ; i++){
        cout<<ex1[i]<<' ';
    }
    cout<<endl;
    vector<int> ex2 = {0,0,1,1,1,1,2,3,3};
    // k = sol.removeDuplicates(ex2);
    k = sol.better(ex2);
    cout<<k<<endl;
    for(int i = 0 ; i < k ; i++){
        cout<<ex2[i]<<' ';
    }
    cout<<endl;
    return 0;
}