export {}; type pair = [number, number]; // [value, index] const input: string[] = require("fs").readFileSync(0).toString().trim().split('\n'); const [N, M]: number[] = [Number(input[0]), Number(input[2])]; let A: number[] = input[1].split(' ').map(Number); let B: number[] = input[3].split(' ').map(Number); const comparator = (a: pair, b: pair) => { if(a[0] === b[0]) return a[1] - b[1]; return b[0]-a[0]; }; let pairA: pair[] = A.map((v,i)=>[v,i]); let pairB: pair[] = B.map((v,i)=>[v,i]); pairA.sort(comparator); pairB.sort(comparator); let subsequence: number[] = []; let limitA = -1, limitB = -1; let idxA = 0, idxB = 0; while(idxA < N && idxB < M) { const [valA, posA]: number[] = pairA[idxA]; const [valB, posB]: number[] = pairB[idxB]; if(valA===valB) { if(posA > limitA && posB > limitB) { subsequence.push(valA); limitA = posA; limitB = posB; idxA++; idxB++; } else if(posA <= limitA) idxA++; else idxB++; } else if(valA > valB) idxA++; else idxB++; } console.log(subsequence.length); if (subsequence.length !== 0) console.log(...subsequence);