******************************* *** The hack uses generator *** ******************************* ** Command line arguments ** no arguments ** Generated test ** 1 200000 100 100 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... ** Generator source ** import java.util.*; import java.io.*; public class Main { static PrintWriter pw = new PrintWriter(System.out); static Scanner sc = new Scanner(System.in); static class Pair implements Comparable{ Integer x ; Integer y ; public Pair(Integer i, Integer j) { this.x = i; this.y = j; } public int compareTo(Object o) { Pair p = (Pair) o ; if (this.x.compareTo(p.x) != 0) return -this.x.compareTo(p.x); else return this.y.compareTo(p.y); } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Pair pair = (Pair) o; return Objects.equals(x, pair.x) && Objects.equals(y, pair.y); } public int hashCode() { return Objects.hash(x, y); } public String toString(){ return "("+this.x + "," + this.y + ")"; } } public static void solve() throws IOException { int n = sc.nextInt(); int l = sc.nextInt(), r = sc.nextInt(); char [] a = sc.next().toCharArray(); int low = 1, high = n / l; while(low <= high){ int mid = (low + high) / 2; int ans = 1; for(int j = mid, k; j < n - mid + 1 && ans + (n - j) / mid >= l ; ){ boolean f = true; int cnt = 0; for(k = j ; k < j + mid ; k++){ if(a[k] != a[cnt]){ f = false; break; } else cnt++; } if(f){ j = k; ans++; } else j++; } // pw.println(ans); if(ans >= l) low = mid + 1; else high = mid - 1; } pw.println(high); } public static void main(String[] args) throws IOException { int n = 200000; pw.println(1); pw.println(n + " " + 100 + " " + 100); for(int i = 0; i < 999 ; i++) pw.print("a"); pw.print("b"); for(int i = 1000 ; i < 200000 ; i++) pw.print("a"); pw.println(); // int t = sc.nextInt(); // while(t -- > 0) // solve(); pw.flush(); } static class Scanner { StringTokenizer st; BufferedReader br; public Scanner(InputStream s) { br = new BufferedReader(new InputStreamReader(s)); } public Scanner(String s) throws FileNotFoundException { br = new BufferedReader(new FileReader(s)); } public String next() throws IOException { while (st == null || !st.hasMoreTokens()) st = new StringTokenizer(br.readLine()); return st.nextToken(); } public int nextInt() throws IOException { return Integer.parseInt(next()); } public long nextLong() throws IOException { return Long.parseLong(next()); } public String nextLine() throws IOException { return br.readLine(); } public double nextDouble() throws IOException { String x = next(); StringBuilder sb = new StringBuilder("0"); double res = 0, f = 1; boolean dec = false, neg = false; int start = 0; if (x.charAt(0) == '-') { neg = true; start++; } for (int i = start; i < x.length(); i++) if (x.charAt(i) == '.') { res = Long.parseLong(sb.toString()); sb = new StringBuilder("0"); dec = true; } else { sb.append(x.charAt(i)); if (dec) f *= 10; } res += Long.parseLong(sb.toString()) / f; return res * (neg ? -1 : 1); } public long[] nextlongArray(int n) throws IOException { long[] a = new long[n]; for (int i = 0; i < n; i++) a[i] = nextLong(); return a; } public Long[] nextLongArray(int n) throws IOException { Long[] a = new Long[n]; for (int i = 0; i < n; i++) a[i] = nextLong(); return a; } public int[] nextIntArray(int n) throws IOException { int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = nextInt(); return a; } public Integer[] nextIntegerArray(int n) throws IOException { Integer[] a = new Integer[n]; for (int i = 0; i < n; i++) a[i] = nextInt(); return a; } public boolean ready() throws IOException { return br.ready(); } } }