static LS longestCommonSubstringsIC(S s1, S s2) {
  new LS out;
  int Start = 0;
  int Max = 0;
  int l1 = l(s1), l2 = l(s2);
  for ping (int i = 0; i < l1; i++) {
    for ping (int j = 0; j < l2; j++) {
      int x = 0;
      while (eqic(s1.charAt(i + x), s2.charAt(j + x))) {
        x++;
        if ((i + x) >= l1 || (j + x) >= l2) break;
      }
      if (x > Max) {
        out.add(substring(s1, i, i+x));
        Max = x;
        Start = i;
      }
    }
  }
  ret out;
}