[v5 た-form] + り + [v5 た-form] + り + する [v1 た-form] + り + [v1 た-form] + り + する [する → した] + り + [する → した] + り + する [来る → 来た] + り + [来る → 来た] + り + する
[i-adj 〜い → 〜かった] + り + [i-adj 〜い → 〜かった] + り + する [na-adj] + だったり + [na-adj] + だったり + する [noun] + だったり + [noun] + だったり + する
Note: する at the end conjugates for tense/politeness (します, した, etc.). Patterns can mix different verbs/adjectives/nouns. A single ~たり + する is also possible.
The たり~たりする pattern is used to list actions as examples from a non-exhaustive set. It expresses the idea of "doing things like A and B (among other things)." Unlike listing actions with て-form (which implies sequence), たり~たりする simply presents representative activities without implying a particular order.
The たり form is made by adding り to the た-form of a verb:
At least two たり actions are typically listed, and the pattern always ends with する (or its conjugated forms such as します, した, している, etc.).
The final する carries the tense and politeness of the sentence. It can be conjugated freely:
Past tense:
Negative:
Polite form:
The same pattern describes states that alternate or keep repeating.
In casual speech the closing する is often left off, though including it makes the sentence complete.