Chef Queries(CodeChef starters)

This problem appeared in June CODECHEF Starters 2021. I loved the idea of the solution . I wasn’t aware of Fenwick trees before and I’m glad that I got to learn a new Data Structure but I couldn’t understand some part of the editorial. Please help me by clarifying my doubts.

Editorial Link:

In Editorialist’s solution I couldn’t understand the range_add function.

void add(int idx, int val) {
		for (++idx; idx < n; idx += idx & -idx)
			bit[idx] += val;

	void range_add(int l, int r, int val) {
		add(l, val);
		add(r + 1, -val);

I thought we should val to all the indices from L to R(I know doing this is costly) but in the range_add function they added val to L and subtracted val at r + 1. Can anyone explain me why are we doing this?

Go through the range update and point query section of this