@Override
  public Object solve() {
    boolean found=false;
    int maxPalindrome=Integer.MAX_VALUE;
    for(int sum=maxFactor+maxFactor;sum>1;sum--) {
      for(int first=sum/2;first>0;first--) {
        int second=sum-first;
        if(second>maxFactor)
          break;
        int product=first*second;
        if(isPalindrome(product)) {
          if(found==false) {
            found =true;
            maxPalindrome=product;
          } else if (maxPalindrome<product){
            maxPalindrome=product;
          }
        }
        if(found && product<=maxPalindrome)
          break;
      }
        
    }
    return Long.valueOf(maxPalindrome);
  }