import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; class C{ static Scanner s = new Scanner(System.in); static Stage stage; static ArrayList> events = new ArrayList>(); static boolean[] updated; static int updatedcount; @SuppressWarnings("unchecked") public static void main(String[] args){ stage = new Stage(Integer.parseInt(s.next())); s.next(); ArrayList finalevents; ArrayList list = new ArrayList(); while(s.hasNext()) { Event e = new Event(Byte.parseByte(s.next()), Integer.parseInt(s.next()), Integer.parseInt(s.next())); list.add(e); if(e.type==State.N) { events.add((ArrayList) list.clone()); list.clear();; } } finalevents=list; updated = new boolean[stage.stage.length]; for(ArrayList l:events) { Event bonus_e = l.remove(l.size()-1); paint(l); stage.addBonus(bonus_e.l, bonus_e.r); } if(!finalevents.isEmpty()) paint(finalevents); stage.finish(); System.out.print(stage.scoreA); System.out.print(" "); System.out.println(stage.scoreB); } static void paint(List l) { updatedcount = stage.stage.length; Arrays.fill(updated, false); for(int i=l.size()-1;i>=0;--i) { Event e = l.get(i); for(int ii=e.l;ii<=e.r;ii++) { if(!updated[ii]) { updated[ii]=true; stage.stage[ii] = e.type; if(--updatedcount==0) break; } } } } } class Stage{ long scoreA=0,scoreB=0; State[] stage; Stage(int size){ stage=new State[size]; Arrays.fill(stage, State.N); } void addBonus(int l,int r) { int a=0,b=0; for(int i=l;i<=r;i++) { State s=stage[i]; if(s!=State.N) { if(s==State.A) { a++; }else { b++; } } } if(a>b) { scoreA += Math.max(a, b); }else if(a