foo.cpp: In member function 'void tree::build(ll*, int, int, int)':
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:6:13: note: in expansion of macro 'M'
#define L l,M,P
^
foo.cpp:31:12: note: in expansion of macro 'L'
build(s,L);
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:7:11: note: in expansion of macro 'M'
#define R M+1,r,S
^
foo.cpp:32:12: note: in expansion of macro 'R'
build(s,R);
^
foo.cpp: In member function 'void tree::add(int, ll, int, int, int)':
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:39:10: note: in expansion of macro 'M'
if(y<=M)
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:6:13: note: in expansion of macro 'M'
#define L l,M,P
^
foo.cpp:40:13: note: in expansion of macro 'L'
add(y,z,L);
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:7:11: note: in expansion of macro 'M'
#define R M+1,r,S
^
foo.cpp:42:13: note: in expansion of macro 'R'
add(y,z,R);
^
foo.cpp: In member function 'll tree::query(int, int, int, int, int)':
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:48:12: note: in expansion of macro 'M'
?a[k]:t<=M
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:6:13: note: in expansion of macro 'M'
#define L l,M,P
^
foo.cpp:49:14: note: in expansion of macro 'L'
?query(s,t,L):s>M
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:49:19: note: in expansion of macro 'M'
?query(s,t,L):s>M
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:7:11: note: in expansion of macro 'M'
#define R M+1,r,S
^
foo.cpp:50:14: note: in expansion of macro 'R'
?query(s,t,R)
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:51:16: note: in expansion of macro 'M'
:gcd(query(s,M,L),
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:6:13: note: in expansion of macro 'M'
#define L l,M,P
^
foo.cpp:51:18: note: in expansion of macro 'L'
:gcd(query(s,M,L),
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:52:9: note: in expansion of macro 'M'
query(M+1,t,R));
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:7:11: note: in expansion of macro 'M'
#define R M+1,r,S
^
foo.cpp:52:15: note: in expansion of macro 'R'
query(M+1,t,R));
^
foo.cpp: In member function 'void tree::merge(ll*, ll*, int, int, int)':
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:6:13: note: in expansion of macro 'M'
#define L l,M,P
^
foo.cpp:56:14: note: in expansion of macro 'L'
merge(s,t,L);
^
foo.cpp:3:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
#define M (l+r>>1)
^
foo.cpp:7:11: note: in expansion of macro 'M'
#define R M+1,r,S
^
foo.cpp:57:14: note: in expa