Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.*;
- class Main
- {
- public static void main(String args[])throws Exception
- {
- BufferedReader bu=new BufferedReader(new InputStreamReader(System.in));
- PrintWriter sb=new PrintWriter(System.out);
- int t=Integer.parseInt(bu.readLine());
- while(t-->0)
- {
- int n=Integer.parseInt(bu.readLine());
- ArrayList<Integer> al=new ArrayList<>();
- for(int i=1;i<=n;i++) al.add(i);
- boolean v[]=new boolean[n+1];
- Set<Integer> set=new HashSet<>();
- ArrayList<int[]> ans=new ArrayList<>();
- while(al.size()>5)
- {
- int i,sz=al.size(),dif=al.get(1)-al.get(0);
- for(i=1;i<sz;i++)
- if(dif!=al.get(i)-al.get(i-1)) break;
- for(;i<sz;i++) v[al.get(i)]=true;
- sz=0;
- for(int x:al)
- if(!v[x]) sz++;
- int l=sz/2,r=l+1;
- if(sz%2==0) l--;
- if(l%2==0) l--;
- l--; r--;
- //System.out.println(l+" "+r);
- ArrayList<Integer> na=new ArrayList<>();
- while(l>=0 && r<sz)
- {
- int a=al.get(l),b=al.get(r);
- set.clear(); set.add(a); set.add(b); set.add(a+b);
- if(v[a] || v[b] || a+b>n || v[a+b] || set.size()!=3) break;
- //System.out.println(a+" "+b+" "+(a+b));
- v[a]=v[b]=v[a+b]=true;
- ans.add(new int[]{a,b,a+b});
- l-=2; r++;
- }
- boolean change=false;
- for(int x:al)
- if(v[x]) change=true;
- else na.add(x);
- if(!change) break;
- al=na;
- }
- sb.append(ans.size()+"\n");
- for(int x[]:ans) sb.append(x[0]+" "+x[1]+" "+x[2]+"\n");
- }
- sb.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement