#pragma GCC diagnostic ignored "-Wunused-result" #pragma GCC optimize "Ofast" #include #include uint8_t c, t[200001] = {}; int64_t n = 0, z = 0; int main() { fseek(stdin, 0, 2); int64_t istrlen = ftell(stdin); uint8_t istr[istrlen], *iptr = istr; fseek(stdin, 0, 0); fread(istr, 1, istrlen, stdin); while ((c = *iptr++) >= '0') n = n * 10 + (c - '0'); while (--n >= 0) { int32_t a = *(int32_t*)iptr; if ((a | 0x30303030) == a) { int64_t _ = *(int16_t*)(iptr + 4); if ((_ | 0x3030) == _) { a = (((((a & 0xF0F0F0F) * 0xA01) >> 8 & 0xFF00FF) * 0x640001) >> 16) * 100 + (_ & 0xF) * 10 + (_ >> 8 & 0xF); iptr += 7; } else if ((_ | 0x30) == _) { a = (((((a & 0xF0F0F0F) * 0xA01) >> 8 & 0xFF00FF) * 0x640001) >> 16) * 10 + (_ & 0xF); iptr += 6; } else { a = ((((a & 0xF0F0F0F) * 0xA01) >> 8 & 0xFF00FF) * 0x640001) >> 16; iptr += 5; } } else if ((a | 0x3030) == a) { uint8_t _ = *(iptr + 2); if (_ >= '0') { a = (a & 0xF) * 100 + (a >> 8 & 0xF) * 10 + (_ - '0'); iptr += 4; } else { a = (a & 0xF) * 10 + (a >> 8 & 0xF); iptr += 3; } } else { a &= 0xF; iptr += 2; } if (++t[a] == 2) { t[a] = 0; ++z; } } printf("%ld", z); return 0; }