There is a long table with a line of plates and candles arranged on top of it. You are given a **0-indexed** string `s` consisting of characters `'*'` and `'|'` only, where a `'*'` represents a **plate** and a `'|'` represents a **candle**.

You are also given a **0-indexed** 2D integer array `queries` where `queries[i] = [lefti, righti]` denotes the **substring** `s[lefti...righti]` (**inclusive**). For each query, you need to find the **number** of plates **between candles** that are **in the substring**. A plate is considered **between candles** if there is at least one candle to its left **and** at least one candle to its right **in the substring**.

*   For example, `s = "||**||**|* "`, and a query `[3, 8]` denotes the substring `"*||******| "`. The number of plates between candles in this substring is `2`, as each of the two plates has at least one candle **in the substring** to its left **and** right.

Return _an integer array_ `answer` _where_ `answer[i]` _is the answer to the_ `ith` _query_.

**Example 1:**

**Input:** s =  "\*\*|\*\*|\*\*\*| ", queries = \[\[2,5\],\[5,9\]\]
**Output:** \[2,3\]
**Explanation:**
- queries\[0\] has two plates between candles.
- queries\[1\] has three plates between candles.

**Example 2:**

**Input:** s =  "\*\*\*|\*\*|\*\*\*\*\*|\*\*||\*\*|\* ", queries = \[\[1,17\],\[4,5\],\[14,17\],\[5,11\],\[15,16\]\]
**Output:** \[9,0,0,0,0\]
**Explanation:**
- queries\[0\] has nine plates between candles.
- The other queries have zero plates between candles.

**Constraints:**

*   `3 <= s.length <= 105`
*   `s` consists of `'*'` and `'|'` characters.
*   `1 <= queries.length <= 105`
*   `queries[i].length == 2`
*   `0 <= lefti <= righti < s.length`


from collections import defaultdict


def splitPainting(segments):
    changes = defaultdict(int)
    for start, end, color in segments:
        changes[start] += color
        changes[end] -= color

    result = []
    start, color_sum = 0, 0
    for key in sorted(changes.keys()):
        if start != key:
            if color_sum:
                result.append([start, key, color_sum])
            start = key
        color_sum += changes[key]

    return result
