互指谜题
题号:NC313049
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

牛可乐和牛客娘正在互相出题,并且约定输出会作为对方问题的部分输入,结果同时确定。

今天,他们给对方出的题目如下:
  • 问题一在所有长度为 y 的排列中,分别扩展各自的无穷循环数组。任取一段长度为 n 的连续子数组,找出子数组中出现次数不等于最小出现次数的所有不同元素。求满足条件的元素个数的最大值,结果记为 x 。
    • 输入:排列的长度 y 和连续子数组的长度 n 
    • 输出:满足条件的元素个数的最大值 x 
  • 问题二在所有长度为 m 的排列中,求满足逆序对为 x 的排列个数,结果记为 y 。
    • 输入:排列的长度 m 和逆序对的个数 x 
    • 输出:满足的排列个数 y 

牛可乐和牛客娘想知道:对于给定的 n 和 m ,这组问题的解是什么?请你帮帮他们。

【名词解释】
长度为 n 的排列:由 1,2,\cdots,n 这 n 个整数、按任意顺序组成的数组(每个整数均恰好出现一次)。例如, \{2,3,1\} 是一个长度为 3 的排列,而 \{1,2,2\} 和  \{1,3,4\} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。
无穷循环数组:将原数组无限次重复拼接得到的新数组。例如, \{2,3,1\} 的无穷循环数组为 \{2,3,1,2,3,1,\cdots\} 。
逆序对:对于下标 i,j 满足 i<j 且对应数字 a_i \gt a_j ,则称  (i,j)  构成一对逆序对。

输入描述:

一行输入两个正整数 n,m(1\le n,m \le 100) ,分别表示问题一的连续子数组长度、问题二的排列长度。

输出描述:

如果不存在解,直接输出 -1 。否则在一行输出两个整数 x,y ,分别表示问题一和问题二的输出。

如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。
示例1

输入

复制
5 3

输出

复制
1 2

说明

对于问题一,输入为 y=2,n=5 ,长度为 2 的排列扩展后的无穷循环数组中取长度为 5 的连续子数组。例如 \{1,2,1,2,1,2,\cdots\} 选取前 5 个,最小出现次数为 2 ,出现次数不等于 2 的元素为 \{1\} ,可以证明没有更多的元素个数,输出为 x=1 。
对于问题二,输入为 m=3,x=1 ,长度为 3 的排列满足逆序对个数为 1 的有 \{1,3,2\},\{2,1,3\} 两个,输出为 y=2 。
示例2

输入

复制
27 6

输出

复制
13 14