← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

const MOD int64 = 998244353

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n int
	fmt.Fscan(in, &n)
	x := make([]int64, n)
	y := make([]int64, n)
	s := make([]int64, n)
	for i := 0; i < n; i++ {
		var xi, yi int64
		var si int
		fmt.Fscan(in, &xi, &yi, &si)
		x[i] = xi
		y[i] = yi
		s[i] = int64(si)
	}

	dp := make([]int64, n)
	pref := make([]int64, n+1) // prefix sum of dp

	for i := 0; i < n; i++ {
		j := sort.Search(n, func(k int) bool { return x[k] >= y[i] })
		val := (x[i] - y[i]) % MOD
		if val < 0 {
			val += MOD
		}
		add := (pref[i] - pref[j]) % MOD
		if add < 0 {
			add += MOD
		}
		dp[i] = (val + add) % MOD
		pref[i+1] = (pref[i] + dp[i]) % MOD
	}

	ans := (x[n-1] + 1) % MOD
	for i := 0; i < n; i++ {
		if s[i] == 1 {
			ans += dp[i]
			if ans >= MOD {
				ans -= MOD
			}
		}
	}

	fmt.Fprintln(out, ans%MOD)
}
```