Run-length encoding is a simple compression technique which compresses sequences of repeating identical bytes.
The encoding rules for this task are as follows:
Any sequence of $n$ identical bytes ($3 \leq n \leq 63$) is replaced by a byte with value `n+0xc0` followed by only one copy of that byte. If any of the original bytes has value `0xc0` or above, such encoding also happens if that byte occurs only one or two times in a row (thus the encoded sequence may actually be longer if such bytes occur).
The task is to write a run-length encoder. The input is a sequence of bytes. It may be a sequence of actual bytes, or a sequence of numbers in the range 0 to 255 (inclusive), whichever is more convenient. The output is again a sequence of bytes (again, in any suitable form), which is the proper run-length encoding of the input sequence.
Examples (byte values are given in 2-digit hex):
```
00 01 02 03 04 → 00 01 02 03 04
00 00 00 01 01 00 → c3 00 01 01 00
be bf c0 c1 c2 → be bf c1 c0 c1 c1 c1 c2
00 00 00 … (63 bytes) → ff 00
00 00 00 … (64 bytes) → ff 00 00
00 00 00 … (65 bytes) → ff 00 00 00
00 00 00 … (66 bytes) → ff 00 c3 00
ff ff ff … (63 bytes) → ff ff
ff ff ff … (64 bytes) → ff ff c1 ff
ff ff ff … (65 bytes) → ff ff c2 ff
ff ff ff … (66 bytes) → ff ff c3 ff
```
This is a <span class="badge is-tag">code-golf</span> challenge; the shortest program for a language wins.