static int entrance(List<Point> points,int k){
        int size=points.size();
        Map<String,Integer> indexHash=new HashMap<>();//坐标hash
        Map<String,Point> pointHash=new HashMap<>();//point hash
        for(int i=0;i<size;++i){
            Point p=points.get(i);
            indexHash.put(p.x+","+p.y,i);
            pointHash.put(p.x+","+p.y,p);
        }
        for(int i=size-1;i>=0;--i){
            Point from=points.get(i);
            int max=0;
            Set<Point> rangePoints=rangePonints(from,k,pointHash);
            for(Point p : rangePoints){
                Integer index=indexHash.get(p.x+","+p.y);
                if(index!=null && index>i && p.maxPathValue > max){
                    max=p.maxPathValue;
                }
            }
            from.maxPathValue=max+from.value;
            if(from.x==0 && from.y==0) return from.maxPathValue;
        }
        return -1;//never happen
    }