import cn.hutool.json.JSONUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.PropertyNamingStrategies; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.common.primitives.Bytes; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.huifu.adapay.model.Payment; import com.huifu.adapay.model.PaymentReverse; import com.huifu.adapay.model.Refund; import com.jsowell.JsowellApplication; import com.jsowell.adapay.config.AbstractAdapayConfig; import com.jsowell.adapay.dto.*; import com.jsowell.adapay.factory.AdapayConfigFactory; import com.jsowell.adapay.operation.PaymentReverseOperation; import com.jsowell.adapay.response.*; import com.jsowell.adapay.service.AdapayService; import com.jsowell.adapay.vo.AdapayCorpMemberVO; import com.jsowell.adapay.vo.DrawCashDetailVO; import com.jsowell.adapay.vo.PaymentInfo; import com.jsowell.common.constant.CacheConstants; import com.jsowell.common.constant.Constants; import com.jsowell.common.core.domain.entity.SysDictData; import com.jsowell.common.core.domain.ykc.LoginRequestData; import com.jsowell.common.core.domain.ykc.TransactionRecordsData; import com.jsowell.common.core.redis.RedisCache; import com.jsowell.common.enums.AcquirerEnum; import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.ykc.*; import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.*; import com.jsowell.common.util.Cp56Time2a.Cp56Time2aUtil; import com.jsowell.common.util.http.HttpUtils; import com.jsowell.common.util.id.IdUtils; import com.jsowell.common.util.id.SnowflakeIdWorker; import com.jsowell.common.util.ip.AddressUtils; import com.jsowell.netty.handler.HeartbeatRequestHandler; import com.jsowell.netty.handler.TransactionRecordsRequestHandler; import com.jsowell.netty.service.camera.impl.CameraBusinessServiceImpl; import com.jsowell.netty.service.yunkuaichong.YKCBusinessService; import com.jsowell.pile.domain.*; import com.jsowell.pile.domain.ykcCommond.IssueQRCodeCommand; import com.jsowell.pile.domain.ykcCommond.ProofreadTimeCommand; import com.jsowell.pile.dto.*; import com.jsowell.pile.dto.amap.GetStationInfoDTO; import com.jsowell.pile.dto.lutongyunting.BindCouponDTO; import com.jsowell.pile.mapper.MemberBasicInfoMapper; import com.jsowell.pile.mapper.PileBillingTemplateMapper; import com.jsowell.pile.service.*; import com.jsowell.pile.service.programlogic.AbstractProgramLogic; import com.jsowell.pile.service.programlogic.ProgramLogicFactory; import com.jsowell.pile.thirdparty.CommonParamsDTO; import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.util.SnUtils; import com.jsowell.pile.vo.base.MemberWalletVO; import com.jsowell.pile.vo.base.PileInfoVO; import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails; import com.jsowell.pile.vo.uniapp.MemberVO; import com.jsowell.pile.vo.uniapp.PileConnectorDetailVO; import com.jsowell.pile.vo.web.*; import com.jsowell.service.MemberService; import com.jsowell.service.OrderService; import com.jsowell.service.PileService; import com.jsowell.service.TempService; import com.jsowell.thirdparty.amap.service.AMapService; import com.jsowell.thirdparty.common.NotificationDTO; import com.jsowell.thirdparty.common.NotificationService; import com.jsowell.thirdparty.huawei.HuaWeiService; import com.jsowell.thirdparty.lianlian.service.LianLianService; import com.jsowell.thirdparty.lutongyunting.service.LTYTService; import com.jsowell.thirdparty.platform.util.Cryptos; import com.jsowell.thirdparty.platform.util.Encodes; import com.jsowell.thirdparty.platform.util.GBSignUtils; import com.jsowell.wxpay.common.WeChatPayParameter; import com.jsowell.wxpay.dto.AppletTemplateMessageSendDTO; import com.jsowell.wxpay.response.WechatPayRefundRequest; import com.jsowell.wxpay.service.WxAppletRemoteService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.RandomStringUtils; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.StopWatch; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.math.RoundingMode; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @ActiveProfiles("dev") @SpringBootTest(classes = JsowellApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) public class SpringBootTestController { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String wechatAppId1 = "wxbb3e0d474569481d"; // 万车充 String wechatAppId2 = "wx20abc5210391649c"; // 嘉佳充电 @Autowired private SnUtils snUtils; @Autowired private PileService pileService; @Autowired private YKCPushCommandService ykcPushCommandService; @Autowired private AdapayMemberAccountService adapayMemberAccountService; @Autowired private PileMsgRecordService pileMsgRecordService; @Autowired private PileStationInfoService pileStationInfoService; @Autowired private YKCPushCommandService ykcPushBusinessService; @Autowired private HeartbeatRequestHandler heartbeatRequestHandler; @Autowired private YKCBusinessService ykcBusinessService; @Autowired private PileBillingTemplateMapper pileBillingTemplateMapper; @Autowired private PileRemoteService pileRemoteService; @Autowired private MemberService memberService; @Autowired private OrderService orderService; @Autowired private PileBillingTemplateService pileBillingTemplateService; @Autowired private MemberBasicInfoMapper memberBasicInfoMapper; @Autowired private SimCardService simCardService; @Autowired private PileBasicInfoService pileBasicInfoService; @Autowired private WechatPayService wechatPayService; @Autowired private OrderBasicInfoService orderBasicInfoService; @Autowired private WxpayCallbackRecordService wxpayCallbackRecordService; @Autowired private WxAppletRemoteService wxAppletRemoteService; @Autowired private RedisCache redisCache; @Autowired private PileAuthCardService pileAuthCardService; @Autowired private LianLianService lianLianService; @Autowired private MemberPlateNumberRelationService memberPlateNumberRelationService; static final String MAC_KEY = "53TtFpc4gdVZbF3x"; static final String ALGORITHM_MAC = "HmacMD5"; @Autowired private AdapayCallbackRecordService adapayCallbackRecordService; @Autowired private AdapayRefundRecordService adapayRefundRecordService; @Autowired private AdapayService adapayService; @Autowired private AMapService aMapService; @Autowired private PileConnectorInfoService pileConnectorInfoService; @Autowired private TransactionRecordsRequestHandler transactionRecordsRequestHandler; @Autowired private MemberBasicInfoService memberBasicInfoService; @Autowired private ClearingWithdrawInfoService clearingWithdrawInfoService; @Autowired private OrderPileOccupyService orderPileOccupyService; @Autowired private CameraBusinessServiceImpl cameraBusinessServiceImpl; @Autowired private LTYTService ltytService; @Autowired private PileMerchantInfoService pileMerchantInfoService; @Autowired private MemberAdapayRecordService memberAdapayRecordService; @Autowired private TransactionService transactionService; @Autowired private OrderPayRecordService orderPayRecordService; @Autowired private TempService tempService; @Autowired private MemberWalletInfoService memberWalletInfoService; @Autowired private MemberGroupService memberGroupService; @Autowired private HuaWeiService huaWeiService; @Autowired private NotificationService notificationService; @Test public void notificationStationInfoTest() { String stationId = "19"; NotificationDTO dto = new NotificationDTO(); dto.setStationId(stationId); dto.setPlatformType("1"); notificationService.notificationStationInfo(dto); } @Test public void queryBillingPriceTest() { String stationId = "19"; // List billingPriceVOS = pileBillingTemplateService.queryBillingPriceOld(stationId); // System.out.println("老版:" + JSON.toJSONString(billingPriceVOS)); // // List billingPriceVOS1 = pileBillingTemplateService.queryBillingPrice(stationId); // System.out.println("新版:" + JSON.toJSONString(billingPriceVOS1)); CurrentTimePriceDetails currentTimePriceDetails = pileBillingTemplateService.getCurrentTimePriceDetails(stationId); System.out.println("currentTimePriceDetails:" + JSON.toJSONString(currentTimePriceDetails)); } @Test public void queryPaymentRefundTest() { String paymentId = "002212023122615542010585629628950949888"; try { adapayService.queryPaymentRefund(paymentId, wechatAppId2); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } @Test public void testnotificationOperationSystemInfo() { // HWStationInfo hwStationInfo = huaWeiService.notificationOperationSystemInfo("19"); // String s = JSON.toJSONString(hwStationInfo); // System.out.println(s); } @Test public void selectByMemberWalletListTest() { String memberId = "12345678"; List memberWalletVOS = memberWalletInfoService.selectByMemberWalletList(memberId); System.out.println(JSON.toJSONString(memberWalletVOS)); } @Test public void testMqttSendMsg() throws InterruptedException { String channelId = "94dd42b6"; String topic = "/GroundlockStatus"; JSONObject jsonObject = new JSONObject(); jsonObject.put("sign","F4213AD90EBC72C678E03450E4E091EE"); jsonObject.put("sn","e27f089d-5fadf6c6"); jsonObject.put("timestamp","2021-07-01 12:00:01"); jsonObject.put("msg_id","GS2021070112000101"); jsonObject.put("msg_type","GroundlockStatus"); jsonObject.put("msg_data",null); // ChannelFuture future = cameraBusinessServiceImpl.sendMsg(channelId, topic, JSON.toJSONString()); // System.out.println(future.toString()); } @Test public void testDeliverEquipBusinessPolicy() { String result = huaWeiService.deliverEquipBusinessPolicy("test123451694073123456", "8823000000073501"); System.out.println(result); } @Test public void testDiscount() { OrderBasicInfo orderBasicInfo = new OrderBasicInfo(); orderBasicInfo.setMemberId("12345678"); orderBasicInfo.setMerchantId("1"); orderBasicInfo.setStationId("19"); orderBasicInfo.setPayAmount(new BigDecimal("200")); OrderDetail orderDetail = new OrderDetail(); orderDetail.setTotalElectricityAmount(new BigDecimal("3")); orderDetail.setTotalServiceAmount(new BigDecimal("0.18")); String memberId = orderBasicInfo.getMemberId(); // 会员id String merchantId = orderBasicInfo.getMerchantId(); // 运营商id String stationId = orderBasicInfo.getStationId(); // 站点id // 电费折扣金额 BigDecimal discountElectricityAmount = BigDecimal.ZERO; // 服务费折扣金额 BigDecimal discountServiceAmount = BigDecimal.ZERO; BigDecimal afterServiceAmountDiscount = BigDecimal.ZERO; BigDecimal afterElectricityAmountDiscount = BigDecimal.ZERO; // 查询会员在此站点会员折扣 MemberDiscountVO memberDiscountVO = memberGroupService.queryMemberDiscount(merchantId, stationId, memberId); if (memberDiscountVO != null) { BigDecimal discount = memberDiscountVO.getDiscount(); // 折扣率 String groupType = memberDiscountVO.getGroupType(); // 类型(1-服务费折扣,2-电费折扣 ,3-电费和服务费一起折扣) BigDecimal totalElectricityAmount = orderDetail.getTotalElectricityAmount(); // 电费 BigDecimal totalServiceAmount = orderDetail.getTotalServiceAmount(); // 服务费 afterServiceAmountDiscount = totalServiceAmount; afterElectricityAmountDiscount = totalElectricityAmount; if (Constants.ONE.equals(groupType)) { afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(4, RoundingMode.DOWN); discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); } else if (Constants.TWO.equals(groupType)) { afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(4, RoundingMode.DOWN); discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); } else { // BigDecimal afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(2, RoundingMode.DOWN); // discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); // BigDecimal afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(2, RoundingMode.DOWN); // discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); afterServiceAmountDiscount = totalServiceAmount.multiply(discount).setScale(4, RoundingMode.DOWN); afterElectricityAmountDiscount = totalElectricityAmount.multiply(discount).setScale(4, RoundingMode.DOWN); discountServiceAmount = totalServiceAmount.subtract(afterServiceAmountDiscount); discountElectricityAmount = totalElectricityAmount.subtract(afterElectricityAmountDiscount); } } // 订单折扣金额 BigDecimal discountAmount = discountServiceAmount.add(discountElectricityAmount); orderBasicInfo.setDiscountAmount(discountAmount); // 更新退款金额 = 退款金额 - 折扣金额 // BigDecimal refundAmount = orderBasicInfo.getRefundAmount().subtract(discountAmount); // 总消费金额 = 折扣后电费 + 折扣后服务费 BigDecimal totalConsumeAmount = afterServiceAmountDiscount.add(afterElectricityAmountDiscount); // 更新退款金额 BigDecimal refundAmount = orderBasicInfo.getPayAmount().subtract(totalConsumeAmount).setScale(2, RoundingMode.DOWN); orderBasicInfo.setRefundAmount(refundAmount); orderDetail.setDiscountElectricityAmount(discountElectricityAmount); orderDetail.setDiscountServiceAmount(discountServiceAmount); } @Test public void queryPaymentByOrderNoTest() { String orderNo = "C88850447008_20240415083226"; String orderCode = orderNo.substring(0, orderNo.indexOf("_")); String wechatAppId = wechatAppId1; try { // List adaPayments = adapayService.queryPaymentsByOrderNo(orderNo, wechatAppId); // System.out.println(JSON.toJSONString(adaPayments)); Set paymentInfoSet = Sets.newHashSet(); List paymentInfos = adapayService.queryPaymentInfosByOrderNo(orderNo, wechatAppId); paymentInfoSet.addAll(paymentInfos); System.out.println("1111:" + JSON.toJSONString(paymentInfos)); List orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode); if (CollectionUtils.isNotEmpty(orderPayRecordList)) { for (OrderPayRecord orderPayRecord : orderPayRecordList) { List paymentInfos2 = orderPayRecordService.parseDeductionRecord(orderPayRecord.getDeductionRecord()); paymentInfoSet.addAll(paymentInfos2); System.out.println("2222:" + JSON.toJSONString(paymentInfos2)); } } System.out.println("set:" + JSON.toJSONString(paymentInfoSet)); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } @Test public void checkPaymentTest() { QueryOrderDTO dto = new QueryOrderDTO(); String startTime = "2023-09-01 00:00:00"; String endTime = "2023-09-30 23:59:59"; dto.setStartTime(startTime); dto.setEndTime(endTime); try { tempService.checkPayment(dto); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } @Test public void toStringTest() { String jsonString = "{\"business\":\"00\",\"communicationVersion\":\"v1.5\",\"connectorNum\":\"01\",\"iccid\":\"89860620180085681816\",\"internetConnection\":\"00\",\"pileSn\":\"88230000000259\",\"pileType\":\"01\",\"programVersion\":\"gyk-V29\\u0000\"}"; LoginRequestData loginRequestData = JSONObject.parseObject(jsonString, LoginRequestData.class); System.out.println(loginRequestData.toString()); } /** * 单元测试,测试订单流程 */ @Test public void testTheOrderProcess() throws Exception { // 生成订单 // OrderBasicInfo orderBasicInfo = generateAnOrder(); // System.out.println(orderBasicInfo); // // 支付订单 // int a = payOrder(orderBasicInfo); // System.out.println(a); // 结算订单 OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode("C46006767636"); settleOrder(orderBasicInfo); // 订单退款 BigDecimal payAmount = orderBasicInfo.getPayAmount(); BigDecimal settleAmount = orderBasicInfo.getSettleAmount(); BigDecimal refundAmt = payAmount.subtract(settleAmount); // 延时分账的,可以部分解冻 memberAdapayRecordService.updateRefundAmountFromFreezeAmount("1234", refundAmt); // 实时分账,全部解冻 // memberAdapayRecordService.unfreezeAmountAndUpdateSpendAmount("test01", payAmount, refundAmt); } // 生成订单 private OrderBasicInfo generateAnOrder() throws ParseException { GenerateOrderDTO dto = new GenerateOrderDTO(); PileConnectorDetailVO vo = new PileConnectorDetailVO(); vo.setStationId("2"); dto.setPileConnector(vo); dto.setMemberId("1"); dto.setStartMode("1"); dto.setPayMode("4"); dto.setPileSn("88000000000001"); dto.setConnectorCode("01"); dto.setChargeAmount(new BigDecimal("10")); // 查询充电桩的计费模板 BillingTemplateVO billingTemplateVO = pileBillingTemplateService.selectBillingTemplateDetailByPileSn(dto.getPileSn()); dto.setBillingTemplate(billingTemplateVO); OrderBasicInfo orderBasicInfo = orderBasicInfoService.saveOrder2Database(dto); return orderBasicInfo; } // 支付订单 private int payOrder(OrderBasicInfo orderBasicInfo) throws Exception { // PayOrderDTO dto = new PayOrderDTO(); // dto.setMemberId(orderBasicInfo.getMemberId()); // dto.setOrderCode(orderBasicInfo.getOrderCode()); // dto.setStartMode(orderBasicInfo.getStartMode()); // dto.setPayMode(orderBasicInfo.getPayMode()); // dto.setPayAmount(orderBasicInfo.getPayAmount()); // // Map map = orderBasicInfoService.payOrder(dto); // return map; String paymentId = "1234"; BigDecimal amount = orderBasicInfo.getPayAmount(); String orderCode = orderBasicInfo.getOrderCode(); JSONObject json = new JSONObject(); json.put("paymentId", paymentId); json.put("amount", amount); // 记录订单支付流水 OrderPayRecord orderPayRecord = OrderPayRecord.builder() .orderCode(orderCode) .payMode(OrderPayRecordEnum.WECHATPAY_PAYMENT.getValue()) .payAmount(amount) .acquirer(AcquirerEnum.ADAPAY.getValue()) .deductionRecord(json.toJSONString()) .createBy(null) .delFlag(DelFlagEnum.NORMAL.getValue()) .build(); orderPayRecordService.batchInsert(Lists.newArrayList(orderPayRecord)); // 更新冻结金额 支付成功后全部冻结 memberAdapayRecordService.updateFreezeAmount(paymentId, amount); // 支付订单成功 PayOrderSuccessCallbackDTO callbackDTO = PayOrderSuccessCallbackDTO.builder() .orderCode(orderCode) .payAmount(amount) .payMode(OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue()) .acquirer(AcquirerEnum.ADAPAY.getValue()) .build(); // 订单支付成功 支付回调 // orderBasicInfoService.payOrderSuccessCallback(callbackDTO); OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode(callbackDTO.getOrderCode()); // 修改订单 orderInfo.setPayMode(callbackDTO.getPayMode()); orderInfo.setPayStatus(Constants.ONE); orderInfo.setPayAmount(callbackDTO.getPayAmount()); orderInfo.setPayTime(new Date()); orderInfo.setChargeStartTime(new Date()); orderInfo.setOrderStatus(OrderStatusEnum.IN_THE_CHARGING.getValue()); return orderBasicInfoService.updateOrderBasicInfo(orderInfo); } // 结算订单 private void settleOrder(OrderBasicInfo orderBasicInfo) { TransactionRecordsData data = TransactionRecordsData.builder() .transactionCode(orderBasicInfo.getTransactionCode()) .pileSn(orderBasicInfo.getPileSn()) .connectorCode(orderBasicInfo.getConnectorCode()) .startTime("2023-03-10 17:10:24") .endTime("2023-03-10 17:10:46") .sharpPrice("1.10000") .sharpUsedElectricity("2.0000") .sharpAmount("2.2000") .peakPrice("1.20000") .peakUsedElectricity("0") .peakAmount("0") .flatPrice("1.30000") .flatUsedElectricity("0") .flatAmount("0") .valleyPrice("1.40000") .valleyUsedElectricity("0") .valleyAmount("0") .totalElectricity("2") .consumptionAmount("5.3000") .vinCode("\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000") .transactionIdentifier("01") .transactionTime("2023-03-10 17:10:46") .stopReasonMsg("结束充电,APP远程停止") .logicCard("0") .createTime(new Date()) .build(); // orderBasicInfoService.settleOrder(data, orderBasicInfo); // 获取更新数据后的orderBasicInfo对象 orderBasicInfoService.returnUpdateOrderBasicInfo(orderBasicInfo, data); // 获取更新数据后的orderDetail对象/更新订单详情 查询订单详情 修改订单数据 OrderDetail orderDetail = orderBasicInfoService.returnUpdateOrderDetail(orderBasicInfo, data); // 更新数据库 OrderTransactionDTO dto = new OrderTransactionDTO(); dto.setOrderBasicInfo(orderBasicInfo); dto.setOrderDetail(orderDetail); transactionService.doUpdateOrder(dto); } public static List calculateRefund(BigDecimal totalAmount, List payments) { List refundList = new ArrayList<>(); BigDecimal remainingAmount = totalAmount; for (BigDecimal payment : payments) { if (remainingAmount.compareTo(BigDecimal.ZERO) <= 0) { // refundList.add(BigDecimal.ZERO); refundList.add(payment); } else { BigDecimal refundPerPayment = remainingAmount.min(payment); // refundList.add(refundPerPayment); refundList.add(payment.subtract(refundPerPayment)); remainingAmount = remainingAmount.subtract(refundPerPayment); } } return refundList; } /** * 测试多笔支付情况,解冻部分金额 */ @Test public void calculateUnfreezeAmountTest() { BigDecimal orderAmount = new BigDecimal("0.06"); List payRecordList = Lists.newArrayList(); // 第一笔支付记录 JSONObject jsonObject = new JSONObject(); jsonObject.put("paymentId", "002212023083114213410543206907226374144"); jsonObject.put("amount", "0.97"); JSONObject jsonObject2 = new JSONObject(); jsonObject2.put("paymentId", "002212023083114213410543206907226374144"); jsonObject2.put("amount", "1"); JSONArray jsonArray = new JSONArray(); jsonArray.add(jsonObject); jsonArray.add(jsonObject2); OrderPayRecord build = OrderPayRecord.builder() .payAmount(new BigDecimal("1.97")) .deductionRecord(jsonArray.toJSONString()) .build(); payRecordList.add(build); AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic("1"); List> maps = orderLogic.calculateUnfreezeAmount(orderAmount, payRecordList); System.out.println(maps); } @Test public void unfreezeAmountAndUpdateSpendAmountTest() { String paymentId = "123"; memberAdapayRecordService.updateRefundAmount(paymentId, new BigDecimal("5")); // memberAdapayRecordService.updateRefundAmountFromFreezeAmount(paymentId, new BigDecimal("20")); // BigDecimal unfreezeAmount = new BigDecimal("32"); // BigDecimal spendAmount = new BigDecimal("10"); // memberAdapayRecordService.unfreezeAmountAndUpdateSpendAmount(paymentId, unfreezeAmount, spendAmount); // memberAdapayRecordService.updateRefundAmountFromFreezeAmount(paymentId, new BigDecimal("2")); } @Test public void getFirstLevelMerchantByMerchantIdTest() { String merchantId = "13"; PileMerchantInfo merchantInfo = pileMerchantInfoService.getFirstLevelMerchantByMerchantId(merchantId); System.out.println(JSON.toJSONString(merchantInfo)); } @Test public void queryPaymentInfoTest() throws BaseAdaPayException { String paymentId = "002212023082514501110541039779091623936"; // 在完成初始化设置情况下,调用查询方法,获取 Payment 查询结果 Map response = Payment.query(paymentId, wechatAppId1); System.out.println(response); } /** * 【用户需要换绑银行卡 1-删除结算账户信息,2-使用新账户信息创建结算账户】 * 删除结算账户信息 * @throws BaseAdaPayException */ @Test public void createDeleteSettleAccountRequestTest() throws BaseAdaPayException { String adapayMemberId = "AM40919405"; String settleAccountId = "0540761871278208"; adapayService.createDeleteSettleAccountRequest(adapayMemberId, settleAccountId, wechatAppId1); } /** * 手动变更银行卡信息 */ @Test public void createSettleAccountRequestTest() throws BaseAdaPayException { SettleAccountDTO dto = new SettleAccountDTO(); dto.setCardId("45050160425000000627"); dto.setCardName("广西昂晟节能科技有限公司"); dto.setTelNo("19163816451"); dto.setBankCode("01050000"); dto.setBankAcctType("1"); dto.setProvCode("0045"); dto.setAreaCode("4501"); String adapayMemberId = "ACM82792551"; adapayService.createSettleAccountRequest(dto, adapayMemberId, wechatAppId1); } @Test public void queryDrawcashDetailTest() throws BaseAdaPayException { String orderNo = "drawcash_1692339516947"; DrawCashDetailVO drawCashDetailVO = adapayService.queryDrawCashDetail(orderNo, wechatAppId1); System.out.println(drawCashDetailVO); } @Test public void refundOrderTest() { String orderCode = "C80410085692"; OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode); String mode = pileMerchantInfoService.getDelayModeByMerchantId(orderBasicInfo.getMerchantId()); AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode); orderLogic.refundOrder(orderBasicInfo); } @Test public void queryPaymentConfirmListTest() { QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO(); dto.setWechatAppId(wechatAppId1); dto.setPaymentId("002212023122208033310584061601344237568"); QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto); List paymentConfirms = response.getPaymentConfirms(); // 如果没有分账信息,说明没有清分 String clearingStatus = null; if (org.springframework.util.CollectionUtils.isEmpty(paymentConfirms)) { clearingStatus = "未清分"; } else { clearingStatus = "已清分"; } System.out.println(clearingStatus); } @Test public void queryAcctFlowListTest() { QueryAcctFlowDTO dto = new QueryAcctFlowDTO(); try { dto.setPageNo(1); dto.setPageSize(100); dto.setAcctType("01"); dto.setWechatAppId(wechatAppId1); dto.setAdapayMemberId("ACM69424215"); dto.setBeginDate("20230823"); dto.setEndDate("20230823"); adapayService.queryAcctFlowList(dto); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } @Test public void testCalculateTheBalanceDeductionAmount() { String memberId = "123456"; BigDecimal amount = new BigDecimal("20"); List resultList = Lists.newArrayList(); // 查询会员的余额充值记录 按照充值时间正序 List memberAdapayRecords = Lists.newArrayList(); memberAdapayRecords.add(MemberAdapayRecord.builder().paymentId("1").balanceAmt(new BigDecimal("50")).build()); memberAdapayRecords.add(MemberAdapayRecord.builder().paymentId("2").balanceAmt(new BigDecimal("60")).build()); memberAdapayRecords.add(MemberAdapayRecord.builder().paymentId("3").balanceAmt(new BigDecimal("10")).build()); // 定义一个临时金额等于消费金额 BigDecimal tempAmount = new BigDecimal(amount.toString()); for (MemberAdapayRecord memberAdapayRecord : memberAdapayRecords) { // 该笔支付剩余金额 取出一笔判断是否剩余金额够支付订单消费吗 BigDecimal balanceAmt = memberAdapayRecord.getBalanceAmt(); // 该笔支付扣除金额 BigDecimal deductionAmount; // 获取延时分账模式 延时分账的使用撤销方法退款,实时分账的使用退款方法 // AdapayCallbackRecord callbackRecord = adapayCallbackRecordService.selectByPaymentId(memberAdapayRecord.getPaymentId()); // String payMode = null; // if (callbackRecord != null) { // JSONObject expendJsonObject = JSON.parseObject(callbackRecord.getExpend()); // payMode = expendJsonObject.getString("payMode"); // } // 消费金额 - 剩余金额 tempAmount = tempAmount.subtract(balanceAmt); if (tempAmount.compareTo(BigDecimal.ZERO) >= 0) { // 计算以后,大于等于0,说明这笔支付剩余金额需要扣完 deductionAmount = balanceAmt; BalanceDeductionAmountVO build = BalanceDeductionAmountVO.builder() .memberId(memberId) .paymentId(memberAdapayRecord.getPaymentId()) .deductionAmount(deductionAmount) .build(); resultList.add(build); } else { // 如果小于0,则说明剩余的钱用不完,扣除金额等于消费金额,并结束循环 deductionAmount = balanceAmt.add(tempAmount); BalanceDeductionAmountVO build = BalanceDeductionAmountVO.builder() .memberId(memberId) .paymentId(memberAdapayRecord.getPaymentId()) .deductionAmount(deductionAmount) .build(); resultList.add(build); break; } } System.out.println(JSON.toJSONString(resultList)); } @Test public void testGenerateOccupyPileOrder() { String memberId = "67569684"; String pileSn = "88230000000135"; String connectorCode = "01"; GenerateOccupyOrderDTO dto = new GenerateOccupyOrderDTO(); dto.setMemberId(memberId); dto.setPileSn(pileSn); dto.setConnectorCode(connectorCode); orderPileOccupyService.generateOccupyPileOrder(dto); } @Test public void testQueryConfirmReverse() throws BaseAdaPayException { QueryConfirmReverseDTO dto = QueryConfirmReverseDTO.builder() .paymentConfirmId("0022120231023104957990562360205131259904") .wechatAppId(wechatAppId1) .build(); adapayService.queryConfirmReverse(dto); } @Test public void testStopOccupyPileOrder() { String wechatAppId = "54135135"; AbstractAdapayConfig config = AdapayConfigFactory.getConfig(wechatAppId); System.out.println(JSON.toJSONString(config)); AbstractAdapayConfig config2 = AdapayConfigFactory.getConfig(wechatAppId1); System.out.println(JSON.toJSONString(config2)); } // 需要重新分账的订单信息(针对未分账的订单) public JSONArray getPaymentList() { String jsonArrayString = "[" + "{\"orderCode\":\"C61421216123\", \"settleAmount\":\"14.84\", \"paymentId\":\"002212023110201350110565844431233073152\"}" + "]"; return JSONArray.parseArray(jsonArrayString); } /** * 批量执行分账 */ @Test public void batchCreatePaymentConfirm() { JSONArray paymentList = getPaymentList(); // TODO 获取默认结算账户,如需分给对应商户就填写正确的汇付会员id // AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.getDefault(); AdapayMemberAccount adapayMemberAccount = new AdapayMemberAccount(); adapayMemberAccount.setAdapayMemberId("ACM23253592"); for (int i = 0; i < paymentList.size(); i++) { JSONObject jsonObject = (JSONObject) paymentList.get(i); BigDecimal confirmAmt = jsonObject.getBigDecimal("settleAmount"); // 确认金额就是结算金额 String paymentId = jsonObject.getString("paymentId"); // 支付id String orderCode = jsonObject.getString("orderCode"); // 订单编号 // 延时分账,使用确认交易API PaymentConfirmResponse paymentConfirmResponse = adapayService.createPaymentConfirmRequest(paymentId, adapayMemberAccount, confirmAmt, orderCode, wechatAppId1); System.out.println(JSON.toJSONString(paymentConfirmResponse)); } } /** * 查询分账信息 * @throws BaseAdaPayException */ @Test public void queryCreateConfirmReverse() throws BaseAdaPayException { List paymentIdList = getPaymentIdList(); // 查询分账信息 List unSplitList = Lists.newArrayList(); // List splitList = Lists.newArrayList(); // BigDecimal total = BigDecimal.ZERO; List selfList = Lists.newArrayList(); Map map = Maps.newHashMap(); for (String paymentId : paymentIdList) { if (StringUtils.isBlank(paymentId)) { continue; } // 查询支付确认id QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO(); dto.setPaymentId(paymentId); dto.setWechatAppId(wechatAppId1); // 查询分账信息 QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto); if (response != null) { List confirms = response.getPaymentConfirms(); if (CollectionUtils.isEmpty(confirms)) { unSplitList.add(paymentId); } else { splitList.add(paymentId); for (QueryPaymentConfirmDetailResponse.PaymentConfirmInfo confirm : confirms) { if (queryConfirmReverseStatus(confirm)) { System.out.println("支付确认id:" + confirm.getId() + "撤销了。。。"); continue; } JSONObject jsonObject = JSON.parseObject(confirm.getDescription()); String adapayMemberId = jsonObject.getString("adapayMemberId"); BigDecimal confirmedAmt = new BigDecimal(confirm.getConfirmedAmt()); total = total.add(confirmedAmt); // 放map map.merge(adapayMemberId, confirmedAmt, BigDecimal::add); if (StringUtils.equals(adapayMemberId, "0")) { selfList.add(paymentId); } } } } else { unSplitList.add(paymentId); } } System.out.println("=================未分账:" + JSON.toJSONString(unSplitList) + ", 数量:" + unSplitList.size()); System.out.println("=================已分账:" + JSON.toJSONString(map) + ", 总分账:" + total + ", 数量:" + splitList.size()); System.out.println("=================自己:" + JSON.toJSONString(selfList) + ", 数量:" + selfList.size()); } private boolean queryConfirmReverseStatus(QueryPaymentConfirmDetailResponse.PaymentConfirmInfo confirm) throws BaseAdaPayException { boolean result = false; QueryConfirmReverseDTO dto = QueryConfirmReverseDTO.builder() .paymentConfirmId(confirm.getId()) .wechatAppId(wechatAppId1) .build(); ConfirmReverseResponse confirmReverseResponse = adapayService.queryConfirmReverse(dto); if (confirmReverseResponse.isSuccess()) { result = true; } return result; } /** * 延迟分账未确认调撤销调撤销接口退款 */ @Test public void createPaymentReverseRequestTest() { String paymentId = "002212023082409392010540599165461884928"; BigDecimal refundAmount = new BigDecimal("0.09"); String memberId = null; // 延迟分账未确认调撤销调撤销接口退款 PaymentReverseOperation operation = new PaymentReverseOperation(); operation.setPaymentId(paymentId); operation.setReverseAmt(refundAmount); operation.setMerchantKey(wechatAppId2); operation.setMemberId(memberId); operation.setScenarioType(ScenarioEnum.ORDER.getValue()); operation.setOrderCode(null); PaymentReverseResponse response = adapayService.createPaymentReverseRequest(operation); System.out.println(JSON.toJSONString(response)); } /** * 测试创建退款请求 */ @Test public void createRefundRequestTest() { String paymentId = "0022120231226155420105856296289509498883333"; BigDecimal refundAmount = new BigDecimal("11.62"); String memberId = "46487809"; String orderCode = "C80414417003"; // 调汇付的交易退款接口 RefundResponse response = adapayService.createRefundRequest(paymentId, refundAmount, wechatAppId2, memberId, ScenarioEnum.ORDER.getValue(), orderCode); System.out.println(JSON.toJSONString(response)); } /** * 批量支付确认撤销 * @throws BaseAdaPayException */ @Test public void testCreateConfirmReverse() throws BaseAdaPayException { List list = getPaymentIdList(); // 批量支付确认撤销 for (String paymentId : list) { // 查询支付确认id QueryPaymentConfirmDTO dto = new QueryPaymentConfirmDTO(); dto.setPaymentId(paymentId); dto.setWechatAppId(wechatAppId1); QueryPaymentConfirmDetailResponse response = adapayService.queryPaymentConfirmList(dto); if (response != null) { List confirms = response.getPaymentConfirms(); System.out.println("支付id:" + paymentId + ", 确认信息:" + JSON.toJSONString(confirms)); if (CollectionUtils.isNotEmpty(confirms)) { for (QueryPaymentConfirmDetailResponse.PaymentConfirmInfo confirm : confirms) { adapayService.createConfirmReverse(confirm.getId(), wechatAppId1); } } } } } /** * 查询撤销列表 * @throws BaseAdaPayException */ @Test public void queryPaymentReverseListTest() throws BaseAdaPayException { JSONArray jsonList = getJsonList(); List idList = Lists.newArrayList(); for (int i = 0; i < jsonList.size(); i++) { JSONObject jsonObject = (JSONObject) jsonList.get(i); // System.out.println(JSON.toJSONString()); BigDecimal refundAmount = jsonObject.getBigDecimal("refundAmount"); String paymentId = jsonObject.getString("paymentId"); adapayService.createPaymentReverseRequest(paymentId, refundAmount, wechatAppId1, "", ScenarioEnum.ORDER.getValue(), ""); } System.out.println("需要撤销idList:" + idList); } public JSONArray getJsonList() { String jsonArrayString = "[{\"refundAmount\":\"354.84\", \"paymentId\":\"002212023102509474610563069333816762368\"}]"; JSONArray jsonArray = JSONArray.parseArray(jsonArrayString); return jsonArray; } public List getPaymentIdList1() { List list = Lists.newArrayList(); list.add("002212023123120094310587505841172688896"); list.add("002212023123122400310587543671670943744"); list.add("002212023123122431610587544481176612864"); list.add("002212023123122452410587545018595393536"); list.add("002212023123122513610587546579820982272"); list.add("002212023123123022610587549306205007872"); list.add("002212023123123265110587555449673854976"); list.add("002212023123123322210587556837606133760"); list.add("002212023123123330910587557036126924800"); list.add("002212023123123360110587557757009375232"); list.add("002212023123123401410587558819099357184"); list.add("002212023123123413110587559141694787584"); list.add("002212023123123440210587559772455563264"); list.add("002212023123123453710587560172614279168"); list.add("002212023123123473510587560665929363456"); list.add("002212023123123540310587562293905965056"); list.add("002212024010100055510587565279529545728"); list.add("002212024010100111210587566610858336256"); list.add("002212024010100161610587567885665923072"); list.add("002212024010100171310587568125937037312"); list.add("002212024010100212010587569159081054208"); list.add("002212024010100333210587572229908312064"); list.add("002212024010100354710587572798733824000"); list.add("002212024010100355410587572824837558272"); list.add("002212024010100453010587575244653170688"); list.add("002212024010100463710587575524919209984"); list.add("002212024010100483210587576005711474688"); list.add("002212024010100490510587576146260353024"); list.add("002212024010100531710587577200302600192"); list.add("002212024010100590310587578651625672704"); list.add("002212024010100592310587578738329661440"); list.add("002212024010101084210587581081364344832"); list.add("002212024010101164410587583103755644928"); list.add("002212024010101221910587584507786326016"); list.add("002212024010101293410587586332936335360"); list.add("002212024010101363510587588099453202432"); list.add("002212024010101453810587590376924139520"); list.add("002212024010101464010587590635768733696"); list.add("002212024010101522910587592100320493568"); list.add("002212024010101525510587592208191188992"); list.add("002212024010101541910587592559441592320"); list.add("002212024010101585310587593711648616448"); list.add("002212024010102020710587594522993643520"); list.add("002212024010102040510587595017831821312"); list.add("002212024010102102010587596591836672000"); list.add("002212024010102140610587597539817435136"); list.add("002212024010102155610587598001906487296"); list.add("002212024010102262110587600624247418880"); list.add("002212024010102321310587602099660959744"); list.add("002212024010102412710587604420976832512"); list.add("002212024010102452110587605402488123392"); list.add("002212024010102460310587605580622966784"); list.add("002212024010102584610587608779179667456"); list.add("002212024010103235510587615109565345792"); list.add("002212024010103392810587619021102362624"); list.add("002212024010103440310587620176435916800"); list.add("002212024010103513010587622049869840384"); list.add("002212024010104042910587625318931902464"); list.add("002212024010104054410587625634899013632"); list.add("002212024010104084010587626373204430848"); list.add("002212024010104141510587627776419803136"); list.add("002212024010104175610587628701984591872"); list.add("002212024010104304510587631928560807936"); list.add("002212024010104322010587632328220807168"); list.add("002212024010104324110587632416288911360"); list.add("002212024010104363110587633379103313920"); list.add("002212024010104492010587636603904978944"); list.add("002212024010104514610587637216903213056"); list.add("002212024010104515910587637271696527360"); list.add("002212024010105055610587640783562829824"); list.add("002212024010105083410587641446484430848"); list.add("002212024010105115310587642281884930048"); list.add("002212024010105171710587643639724470272"); list.add("002212024010105172610587643676384235520"); list.add("002212024010105290110587646591839203328"); list.add("002212024010105354510587648288091238400"); list.add("002212024010105424610587650052354695168"); list.add("002212024010105472710587651230886637568"); list.add("002212024010105485710587651608062480384"); list.add("002212024010105550210587653139187744768"); list.add("002212024010106255910587660929595322368"); list.add("002212024010106362010587663532982734848"); list.add("002212024010106465010587666175134908416"); list.add("002212024010108060310587686108962426880"); list.add("002212024010108082010587686684481138688"); list.add("002212024010108195410587689594420301824"); list.add("002212024010108313210587692523257708544"); list.add("002212024010108344010587693310568263680"); list.add("002212024010108402210587694746871296000"); list.add("002212024010109250010587705977994760192"); list.add("002212024010109275410587706710921535488"); list.add("002212024010109284710587706932339609600"); list.add("002212024010109345810587708488281878528"); list.add("002212024010109435910587710756420784128"); list.add("002212024010109535710587713266683621376"); list.add("002212024010109542410587713380016484352"); list.add("002212024010109542810587713394553348096"); list.add("002212024010111013210587730271301648384"); list.add("002212024010111200010587734921326383104"); list.add("002212024010111294310587737366380634112"); list.add("002212024010111362710587739057628864512"); list.add("002212024010111364210587739122150436864"); list.add("002212024010111410210587740212861038592"); list.add("002212024010111555710587743968653357056"); list.add("002212024010111563110587744107855720448"); list.add("002212024010112000110587744990767493120"); list.add("002212024010112065410587746724595744768"); list.add("002212024010112175110587749480113594368"); list.add("002212024010112184610587749707780042752"); list.add("002212024010112234110587750945012015104"); list.add("002212024010112265310587751753133166592"); list.add("002212024010112280210587752041639428096"); list.add("002212024010112285410587752258500661248"); list.add("002212024010112315110587753003083739136"); list.add("002212024010112355610587754027385053184"); list.add("002212024010112365710587754284579401728"); list.add("002212024010112401610587755120600248320"); list.add("002212024010112470810587756849799323648"); list.add("002212024010112495110587757532133961728"); list.add("002212024010112524810587758274302996480"); list.add("002212024010112572010587759414891532288"); list.add("002212024010113064010587761761673834496"); list.add("002212024010113081410587762159145676800"); list.add("002212024010113085910587762347727630336"); list.add("002212024010113090010587762349809618944"); list.add("002212024010113133610587763507262435328"); list.add("002212024010113154110587764031394541568"); list.add("002212024010113180310587764628013314048"); list.add("002212024010113201610587765185693716480"); list.add("002212024010113223510587765768315252736"); list.add("002212024010113231810587765948404346880"); list.add("002212024010113302310587767731656372224"); list.add("002212024010113383510587769795996332032"); list.add("002212024010113392510587770005261004800"); list.add("002212024010113420010587770656982929408"); list.add("002212024010113465910587771908961296384"); list.add("002212024010113510410587772935902638080"); list.add("002212024010113522210587773263143268352"); list.add("002212024010113530510587773443319410688"); list.add("002212024010113553610587774078411583488"); list.add("002212024010114152310587779055676682240"); list.add("002212024010114182010587779799303524352"); list.add("002212024010114185010587779924765831168"); list.add("002212024010114203410587780362766151680"); list.add("002212024010114294610587782677154213888"); list.add("002212024010114314110587783158557798400"); list.add("002212024010114333810587783647735623680"); list.add("002212024010114362910587784366665699328"); list.add("002212024010114425610587785991848681472"); list.add("002212024010114464710587786959716741120"); list.add("002212024010114470510587787032735379456"); list.add("002212024010114513010587788147330494464"); list.add("002212024010114593510587790181018853376"); list.add("002212024010115040410587791308137984000"); list.add("002212024010115100410587792817603342336"); list.add("002212024010115153410587794201183301632"); list.add("002212024010115155610587794294099783680"); list.add("002212024010115194510587795253400989696"); list.add("002212024010115195310587795286480433152"); list.add("002212024010115273110587797211555180544"); list.add("002212024010115293510587797731475959808"); list.add("002212024010115550510587804148735913984"); list.add("002212024010116015210587805855204970496"); list.add("002212024010116071010587807186250870784"); list.add("002212024010116155210587809379322408960"); list.add("002212024010116155310587809382375559168"); list.add("002212024010116244210587811598946234368"); list.add("002212024010116252810587811793714786304"); list.add("002212024010116394310587815379974426624"); list.add("002212024010116423010587816080032952320"); list.add("002212024010116471310587817268738912256"); list.add("002212024010116543710587819128237084672"); list.add("002212024010116590010587820230151385088"); list.add("002212024010117023810587821148423974912"); list.add("002212024010117061310587822046777143296"); list.add("002212024010117163010587824636684005376"); list.add("002212024010117215510587825998712123392"); list.add("002212024010117434210587831482470219776"); list.add("002212024010117594310587835513131200512"); list.add("002212024010118012510587835941146980352"); list.add("002212024010118012710587835946178560000"); list.add("002212024010118072810587837461681258497"); list.add("002212024010118120010587838602681036800"); list.add("002212024010118171910587839942456012800"); list.add("002212024010118212010587840950350491648"); list.add("002212024010118244110587841797011927040"); list.add("002212024010118265310587842350422528000"); list.add("002212024010118274210587842553837105152"); list.add("002212024010119010410587850952624271360"); list.add("002212024010119040010587851688592257024"); list.add("002212024010119093710587853104418500608"); list.add("002212024010119294010587858149696221184"); list.add("002212024010119300310587858243646173184"); list.add("002212024010119344910587859446161956865"); list.add("002212024010119411310587861055808860160"); list.add("002212024010119413210587861134952325120"); list.add("002212024010119432010587861586028376064"); list.add("002212024010119482610587862871785717760"); list.add("002212024010119500710587863296462491648"); list.add("002212024010119551710587864594062536704"); list.add("002212024010119581010587865321401860096"); list.add("002212024010120052010587867122482917376"); list.add("002212024010120115410587868777522524160"); list.add("002212024010120115610587868785017376768"); list.add("002212024010120175910587870308316622848"); list.add("002212024010120344010587874507950157824"); list.add("002212024010120351510587874653095473152"); list.add("002212024010120352310587874688672223232"); list.add("002212024010120484310587878042802974720"); list.add("002212024010120564010587880041575288832"); list.add("002212024010121001110587880927430987776"); list.add("002212024010121041710587881959018442752"); list.add("002212024010121093010587883271965618176"); list.add("002212024010121170110587885162538688512"); list.add("002212024010121235110587886883903090688"); list.add("002212024010121290310587888192477220864"); list.add("002212024010121314310587888864742543360"); list.add("002212024010121322710587889047312908288"); list.add("002212024010121392010587890779513925632"); list.add("002212024010121403210587891082536792064"); list.add("002212024010121454210587892382994837504"); list.add("002212024010121484210587893137471639552"); list.add("002212024010121491710587893283591663616"); list.add("002212024010121533210587894352423796736"); list.add("002212024010121550410587894740312158208"); list.add("002212024010121553810587894883924938752"); list.add("002212024010122025510587896716515471360"); list.add("002212024010122060810587897525413711872"); list.add("002212024010122070410587897758243909632"); list.add("002212024010122222310587901615335682048"); list.add("002212024010122222610587901626182815744"); list.add("002212024010122280810587903061471367168"); list.add("002212024010122294910587903486926630912"); list.add("002212024010122301910587903609453654016"); list.add("002212024010122305310587903751312928768"); list.add("002212024010122314210587903957593165824"); list.add("002212024010122411210587906348338057216"); list.add("002212024010122444010587907222469459968"); list.add("002212024010122463810587907718916222976"); list.add("002212024010122485110587908273410174976"); list.add("002212024010122511910587908894959296512"); list.add("002212024010122553910587909986140598272"); list.add("002212024010122561610587910140736942080"); list.add("002212024010122585210587910795688439808"); list.add("002212024010123035910587912082679885824"); list.add("002212024010123083910587913256431882240"); list.add("002212024010123104410587913782223720448"); list.add("002212024010123123410587914243652415488"); list.add("002212024010123175010587915568875958272"); list.add("002212024010123251610587917437196263424"); list.add("002212024010123383610587920793564893184"); list.add("002212024010123490010587923413213491200"); list.add("002212024010123571910587925502953926656"); list.add("002212024010200022810587926799163371520"); list.add("002212024010200060010587927691786825728"); list.add("002212024010200072110587928028593221632"); list.add("002212024010200085210587928410213519360"); list.add("002212024010200090510587928467056209920"); list.add("002212024010200134510587929640837951488"); list.add("002212024010200195710587931199639588864"); list.add("002212024010200235210587932185891287040"); list.add("002212024010200265810587932967313715200"); list.add("002212024010200343610587934889529683968"); list.add("002212024010200350810587935023288750080"); list.add("002212024010200405910587936496013381632"); list.add("002212024010200552710587940135883001856"); list.add("002212024010201002110587941369250033664"); list.add("002212024010201044410587942472242933760"); list.add("002212024010201112610587944157853544448"); list.add("002212024010201150610587945077956980736"); list.add("002212024010201250510587947592709591040"); list.add("002212024010201260410587947839802814464"); list.add("002212024010201335510587949816334716928"); list.add("002212024010201393910587951259971006464"); list.add("002212024010201414810587951797401268224"); list.add("002212024010201470310587953120119320576"); list.add("002212024010201530810587954651259760640"); list.add("002212024010202005210587956595543388160"); list.add("002212024010202045910587957633309241344"); list.add("002212024010202062010587957971628453888"); list.add("002212024010202143810587960063521501184"); list.add("002212024010202172810587960776558579712"); list.add("002212024010202210010587961663278305280"); list.add("002212024010202232410587962267887595520"); list.add("002212024010202285610587963659121086464"); list.add("002212024010202405010587966653878874112"); list.add("002212024010202462010587968039345565696"); list.add("002212024010202464710587968152977420288"); list.add("002212024010202472010587968289935765504"); list.add("002212024010203005210587971697582116864"); list.add("002212024010203025610587972216528416768"); list.add("002212024010203130910587974786518396928"); list.add("002212024010203215610587977000302915584"); list.add("002212024010203225210587977233932967936"); list.add("002212024010203311010587979321185628160"); list.add("002212024010203331110587979830136909824"); list.add("002212024010203385410587981269780357120"); list.add("002212024010204344810587995335850831872"); list.add("002212024010204372710587996004090056704"); list.add("002212024010204402910587996764055998464"); list.add("002212024010204532510588000020031279104"); list.add("002212024010205082310588003788085243904"); list.add("002212024010205215710588007199975084032"); list.add("002212024010205270410588008488978231296"); list.add("002212024010205310810588009510742986752"); list.add("002212024010205374010588011157745332224"); list.add("002212024010205454410588013185485795328"); list.add("002212024010205482210588013849011916800"); list.add("002212024010205540210588015276376174592"); list.add("002212024010205590710588016554218205184"); list.add("002212024010206104210588019471038304256"); list.add("002212024010206380110588026344100048896"); list.add("002212024010206432510588027702184816640"); list.add("002212024010207515410588044937140916224"); list.add("002212024010208033410588047871729930240"); list.add("002212024010208570010588061322167304192"); list.add("002212024010209020110588062583494119424"); list.add("002212024010209062110588063673090412544"); list.add("002212024010209141610588065667673714688"); list.add("002212024010209284010588069289121525760"); list.add("002212024010209341310588070684513923072"); list.add("002212024010209585810588076916300951552"); list.add("002212024010210012110588077515127091200"); list.add("002212024010210043610588078334757789696"); list.add("002212024010210051710588078504204070912"); list.add("002212024010210191110588082001824411648"); list.add("002212024010210262010588083800503201792"); list.add("002212024010210285210588084438561394688"); list.add("002212024010210310810588085009823322112"); list.add("002212024010210514610588090200679452672"); list.add("002212024010210563310588091408107581440"); list.add("002212024010211033610588093178895339520"); list.add("002212024010211061010588093826201071616"); list.add("002212024010211164110588096472450035712"); list.add("002212024010211190810588097089502294016"); list.add("002212024010211450810588103631819386880"); list.add("002212024010211533810588105771858374656"); list.add("002212024010211570110588106623949955072"); list.add("002212024010212013610588107777443741696"); list.add("002212024010212082610588109495832252416"); list.add("002212024010212135510588110874406514688"); list.add("002212024010212185910588112150797987840"); list.add("002212024010212225210588113129438162944"); list.add("002212024010212270410588114185470128128"); list.add("002212024010212334810588115879275147264"); list.add("002212024010212372010588116768701526016"); list.add("002212024010212441310588118502271234048"); list.add("002212024010212450110588118702901571584"); list.add("002212024010212463610588119099353960448"); list.add("002212024010212511410588120266146607104"); list.add("002212024010213065210588124203721928704"); list.add("002212024010213083110588124618544402432"); list.add("002212024010213093210588124871897509888"); list.add("002212024010213131110588125790045147136"); list.add("002212024010213134010588125913819758592"); list.add("002212024010213152310588126345600917504"); list.add("002212024010213191110588127299787157504"); list.add("002212024010213214810588127961054474240"); list.add("002212024010213282010588129604805373952"); list.add("002212024010213304710588130219506823168"); list.add("002212024010213370310588131797605314560"); list.add("002212024010213401710588132612818034688"); list.add("002212024010213410210588132798781960192"); list.add("002212024010213414310588132971219800064"); list.add("002212024010213443110588133678627991552"); list.add("002212024010213461210588134100109062144"); list.add("002212024010213480210588134563329183744"); list.add("002212024010213482210588134645195452416"); list.add("002212024010213502310588135153347964928"); list.add("002212024010213562310588136664799768576"); list.add("002212024010214001110588137619261689856"); list.add("002212024010214094010588140006084907008"); list.add("002212024010214113110588140471987834880"); list.add("002212024010214121110588140637807726592"); list.add("002212024010214141610588141164638203904"); list.add("002212024010214212010588142940844863488"); list.add("002212024010214233610588143511308185600"); list.add("002212024010214244210588143787881754624"); list.add("002212024010214270310588144382287785984"); list.add("002212024010214342210588146220114755584"); list.add("002212024010214364010588146801407143936"); list.add("002212024010214392510588147490755203072"); list.add("002212024010214412810588148009558126592"); list.add("002212024010214452610588149008782438400"); list.add("002212024010214473310588149539794710528"); list.add("002212024010214480310588149667356848128"); list.add("002212024010214522910588150778919084032"); list.add("002212024010214531810588150988386447360"); list.add("002212024010214575410588152143487578112"); list.add("002212024010215150210588156455442034688"); list.add("002212024010215161410588156759169167360"); list.add("002212024010215162310588156797282807808"); list.add("002212024010215201910588157785294794752"); list.add("002212024010215211110588158001616195584"); list.add("002212024010215213810588158118552625152"); list.add("002212024010215243810588158872588587008"); list.add("002212024010215244010588158879847378944"); list.add("002212024010215265610588159452001120256"); list.add("002212024010215405010588162948765462528"); list.add("002212024010215560110588166768073519104"); list.add("002212024010216093110588170164994420736"); list.add("002212024010216350410588176598057029632"); list.add("002212024010216460710588179376368193536"); list.add("002212024010217091310588185193104306176"); list.add("002212024010217251110588189207212429312"); list.add("002212024010218284610588205209002283008"); list.add("002212024010218361110588207076930596864"); list.add("002212024010218411910588208370480254976"); list.add("002212024010218473610588209948223713280"); list.add("002212024010218524510588211245956665344"); list.add("002212024010218554210588211989089316864"); list.add("002212024010219071710588214902837587968"); list.add("002212024010219084810588215286646566912"); list.add("002212024010219162410588217198530379776"); list.add("002212024010219444010588224313022853120"); list.add("002212024010219453910588224557521850368"); list.add("002212024010219565610588227396577030144"); list.add("002212024010220041110588229221186756608"); list.add("002212024010220052310588229523761672192"); list.add("002212024010220055810588229672841621504"); list.add("002212024010220090910588230471112339456"); list.add("002212024010220091710588230506425577472"); list.add("002212024010220334210588236649126801408"); list.add("002212024010220371810588237556971253760"); list.add("002212024010220395610588238218338701312"); list.add("002212024010220495910588240750746038272"); list.add("002212024010220562810588242381546831872"); list.add("002212024010220575610588242749498290176"); list.add("002212024010220582310588242862956064768"); list.add("002212024010221024510588243961435230208"); list.add("002212024010221103810588245944919240704"); list.add("002212024010221153210588247180756082688"); list.add("002212024010221222810588248923041673216"); list.add("002212024010221225210588249025868566528"); list.add("002212024010221275910588250311651880960"); list.add("002212024010221330010588251575142432768"); list.add("002212024010221411910588253667535482880"); list.add("002212024010221492310588255696351424512"); list.add("002212024010221573910588257779047747584"); list.add("002212024010221575410588257839425826816"); list.add("002212024010222003110588258498977841152"); list.add("002212024010222003910588258533482475520"); list.add("002212024010222023110588259001395679232"); list.add("002212024010222044110588259549627412480"); list.add("002212024010222085810588260626114048000"); list.add("002212024010222091810588260710678638592"); list.add("002212024010222114310588261316212699136"); list.add("002212024010222130810588261674455166976"); list.add("002212024010222132710588261753383391232"); list.add("002212024010222190010588263149524180992"); list.add("002212024010222230210588264166467334144"); list.add("002212024010222281910588265494650310656"); list.add("002212024010222285610588265651687329792"); list.add("002212024010222285710588265655008014336"); list.add("002212024010222302710588266034160168960"); list.add("002212024010222323310588266561408987136"); list.add("002212024010222332110588266761893228544"); list.add("002212024010222350810588267209070456832"); list.add("002212024010222365510588267657953656832"); list.add("002212024010222423810588269097528086528"); list.add("002212024010222424910588269143013036032"); list.add("002212024010222441410588269501821972480"); list.add("002212024010222501010588270991924375552"); list.add("002212024010222501810588271026265763840"); list.add("002212024010222503710588271108880969728"); list.add("002212024010222574410588272898262151168"); list.add("002212024010223020610588273996683259904"); list.add("002212024010223041410588274534031847424"); list.add("002212024010223045510588274706902175744"); list.add("002212024010223135610588276975620263936"); list.add("002212024010223181410588278059220185088"); list.add("002212024010223183410588278141769445376"); list.add("002212024010223220010588279003598254080"); list.add("002212024010223383310588283168769028096"); list.add("002212024010223440710588284569480876032"); list.add("002212024010223495510588286032253513728"); list.add("002212024010223551810588287384104235008"); list.add("002212024010223563210588287694306570240"); list.add("002212024010223582210588288157804417024"); list.add("002212024010223584410588288248567238656"); list.add("002212024010300051110588289874252025856"); list.add("002212024010300100810588291119947067392"); list.add("002212024010300105810588291328032485376"); list.add("002212024010300132710588291953898074112"); list.add("002212024010300134910588292043308052480"); list.add("002212024010300144010588292259079892992"); list.add("002212024010300162610588292704825729024"); list.add("002212024010300163910588292759636111360"); list.add("002212024010300271010588295403730329600"); list.add("002212024010300293810588296026979807232"); list.add("002212024010300322810588296739463647232"); list.add("002212024010300393910588298548261810176"); list.add("002212024010300460810588300178284199936"); list.add("002212024010300511710588301474355441664"); list.add("002212024010300521410588301714043482112"); list.add("002212024010300584110588303336418078720"); list.add("002212024010301022210588304263362424832"); list.add("002212024010301084010588305847245299712"); list.add("002212024010301094110588306105868103680"); list.add("002212024010301100110588306188277235712"); list.add("002212024010301142810588307309093318656"); list.add("002212024010301172110588308033749323776"); list.add("002212024010301215110588309165583511552"); list.add("002212024010301225510588309434112634880"); list.add("002212024010301262210588310304029249536"); list.add("002212024010301300510588311239366651904"); list.add("002212024010301382610588313338375155712"); list.add("002212024010301430110588314494561792000"); list.add("002212024010301525710588316994012852224"); list.add("002212024010301531710588317078748950528"); list.add("002212024010301572810588318127794118656"); list.add("002212024010301595610588318750772948992"); list.add("002212024010302065610588320511266086912"); list.add("002212024010302123510588321933981609984"); list.add("002212024010302301110588326362138300416"); list.add("002212024010302314410588326752357289984"); list.add("002212024010302332410588327174218838016"); list.add("002212024010302365610588328062808854528"); list.add("002212024010302382910588328451367260160"); list.add("002212024010302450410588330108509687808"); list.add("002212024010303035510588334852622118912"); list.add("002212024010303064710588335575547793408"); list.add("002212024010303222110588339492330811392"); list.add("002212024010303400510588343954447118336"); list.add("002212024010303434010588344855099371520"); list.add("002212024010303502310588346545180209152"); list.add("002212024010304113710588351887976919040"); list.add("002212024010304444410588360225534652416"); list.add("002212024010304465410588360769189928960"); list.add("002212024010304530710588362332934000640"); list.add("002212024010305012710588364432473288704"); list.add("002212024010305430410588374903073910784"); list.add("002212024010305512110588376990229401600"); list.add("002212024010305552910588378030106415104"); list.add("002212024010306001310588379220843794432"); list.add("002212024010306230410588384970404769792"); list.add("002212024010308122110588412471596265472"); list.add("002212024010308510310588422211168309248"); list.add("002212024010308540710588422982278516736"); list.add("002212024010309065710588426211075407872"); list.add("002212024010309193610588429394739048448"); list.add("002212024010309245510588430735699570688"); list.add("002212024010309314510588432451943206912"); list.add("002212024010309325210588432734207983616"); list.add("002212024010309422310588435130995400704"); list.add("002212024010310004810588439764258041856"); list.add("002212024010310241710588445675743719424"); list.add("002212024010310272410588446457633660928"); list.add("002212024010310345510588448351891468288"); list.add("002212024010310390010588449378508435456"); list.add("002212024010310423210588450266849783808"); list.add("002212024010310565910588453904908308480"); list.add("002212024010311011610588454979795177472"); list.add("002212024010311051210588455972283330560"); list.add("002212024010311111010588457472020590592"); list.add("002212024010311120310588457696787722240"); list.add("002212024010311193210588459579962077184"); list.add("002212024010311210710588459977200480256"); list.add("002212024010311254110588461127895977984"); list.add("002212024010311562310588468852638289920"); list.add("002212024010311580810588469292489990144"); list.add("002212024010312055210588471237028810752"); list.add("002212024010312102410588472380925263872"); list.add("002212024010312171410588474097065627648"); list.add("002212024010312224910588475503150329856"); list.add("002212024010312225110588475511193059328"); list.add("002212024010312351110588478616659062784"); list.add("002212024010312424010588480498839367680"); list.add("002212024010312455710588481323874234368"); list.add("002212024010312464510588481528523878400"); list.add("002212024010312551810588483677277237248"); list.add("002212024010312591010588484652637466624"); list.add("002212024010312595010588484818033807360"); list.add("002212024010313093410588487268694994944"); list.add("002212024010313204410588490078274031616"); list.add("002212024010313242310588490999574237184"); list.add("002212024010313253610588491301893197824"); list.add("002212024010313270510588491675626655744"); list.add("002212024010313354110588493840294367232"); list.add("002212024010313370310588494187003924480"); list.add("002212024010313382410588494526261276672"); list.add("002212024010313384310588494606845734912"); list.add("002212024010313413310588495316452216832"); list.add("002212024010313464810588496639923961856"); list.add("002212024010313465010588496647215607808"); list.add("002212024010313513910588497860464959488"); list.add("002212024010313595510588499938405535744"); list.add("002212024010314041410588501026869735424"); list.add("002212024010314101810588502553232191488"); list.add("002212024010314110110588502733024153600"); list.add("002212024010314163410588504130212007936"); list.add("002212024010314173610588504389553446912"); list.add("002212024010314175610588504474991419392"); list.add("002212024010314243110588506131795652608"); list.add("002212024010314253610588506404254887936"); list.add("002212024010314285710588507246124617728"); list.add("002212024010314290110588507264246116352"); list.add("002212024010314300610588507535212163072"); list.add("002212024010314323110588508142224420864"); list.add("002212024010314355810588509011807244288"); list.add("002212024010314371010588509312447266816"); list.add("002212024010314401110588510075229876224"); list.add("002212024010314430410588510799369277440"); list.add("002212024010314432810588510900695101440"); list.add("002212024010314520210588513056026767360"); list.add("002212024010314550410588513818758737920"); list.add("002212024010315001710588515133111709696"); list.add("002212024010315105010588517787506794496"); list.add("002212024010315175810588519581321752576"); list.add("002212024010315375310588524595990454272"); list.add("002212024010315394510588525065676566528"); list.add("002212024010315415610588525613699788800"); list.add("002212024010315430510588525904503877632"); list.add("002212024010315455710588526624073338880"); list.add("002212024010315595810588530151167766528"); list.add("002212024010316065810588531912593838080"); list.add("002212024010316120510588533199864184832"); list.add("002212024010316120810588533212916158464"); list.add("002212024010316205110588535405519187968"); list.add("002212024010316235610588536183141724160"); list.add("002212024010316270610588536978876096512"); list.add("002212024010316314010588538131137540096"); list.add("002212024010316372010588539553492353024"); list.add("002212024010316580910588544796007051264"); list.add("002212024010317320710588553343325302784"); list.add("002212024010317493010588557715356282880"); list.add("002212024010317493510588557738262802432"); list.add("002212024010317530210588558606442016768"); list.add("002212024010318234910588566353119395840"); list.add("002212024010318275410588567378311090176"); list.add("002212024010318342810588569034470834176"); list.add("002212024010318391010588570215067529216"); list.add("002212024010318421810588571003635937280"); list.add("002212024010318490310588572701000667136"); list.add("002212024010318520410588573460792365056"); list.add("002212024010319190110588580246226046976"); list.add("002212024010319362310588584613234708480"); list.add("002212024010319584210588590232178282496"); list.add("002212024010320055810588592058296274944"); list.add("002212024010320083510588592719527456768"); list.add("002212024010320222410588596195510054912"); list.add("002212024010320261210588597151713865728"); list.add("002212024010320495810588603134125821952"); list.add("002212024010321015510588606141249990656"); list.add("002212024010321080710588607698392600576"); list.add("002212024010321102210588608265793417216"); list.add("002212024010321141710588609252457730048"); list.add("002212024010321193810588610597186220032"); list.add("002212024010321294810588613155814227968"); list.add("002212024010321371710588615040234622976"); list.add("002212024010321454210588617159238180864"); list.add("002212024010321501910588618320587898880"); list.add("002212024010321543010588619374778605568"); list.add("002212024010321582910588620375549947904"); list.add("002212024010322001210588620807215362048"); list.add("002212024010322055310588622235591729152"); list.add("002212024010322102010588623356830257152"); list.add("002212024010322114910588623732799467520"); list.add("002212024010322130910588624067838734336"); list.add("002212024010322155910588624780198293504"); list.add("002212024010322174310588625214986809344"); list.add("002212024010322181010588625327400439808"); list.add("002212024010322185010588625497497382912"); list.add("002212024010322261410588627358110838784"); list.add("002212024010322271810588627628761247744"); list.add("002212024010322285010588628012854636544"); list.add("002212024010322290910588628092331110400"); list.add("002212024010322302410588628405443739648"); list.add("002212024010322310610588628583616712704"); list.add("002212024010322310810588628589875675136"); list.add("002212024010322405710588631062156963840"); list.add("002212024010322413310588631214958620672"); list.add("002212024010322482810588632952094994432"); list.add("002212024010322485610588633071616110592"); list.add("002212024010322534110588634265568260096"); list.add("002212024010322535010588634306223648768"); list.add("002212024010322544210588634520616275968"); list.add("002212024010322593610588635755208814592"); list.add("002212024010322595810588635849337040896"); list.add("002212024010323014710588636303181705216"); list.add("002212024010323063110588637498049441792"); list.add("002212024010323143210588639512600993792"); list.add("002212024010323163810588640042504794112"); list.add("002212024010323190110588640641230548992"); list.add("002212024010323195010588640846455631872"); list.add("002212024010323230810588641679547281408"); list.add("002212024010323263610588642549219438592"); list.add("002212024010323282810588643020654350336"); list.add("002212024010323294110588643328351498240"); list.add("002212024010323310910588643697556656128"); list.add("002212024010323331210588644213118595072"); list.add("002212024010323373310588645306755551232"); list.add("002212024010323383310588645558268604416"); list.add("002212024010323403810588646082795909120"); list.add("002212024010323460010588647430812823552"); list.add("002212024010323463910588647594904236032"); list.add("002212024010323501710588648511712931840"); list.add("002212024010323524610588649133515698176"); list.add("002212024010323525810588649183868317696"); list.add("002212024010323553310588649836768112640"); list.add("002212024010400015410588651434606178304"); list.add("002212024010400073210588652852808232960"); list.add("002212024010400144810588654678917533696"); list.add("002212024010400153210588654864760860672"); list.add("002212024010400161010588655023463968768"); list.add("002212024010400244210588657173462396928"); list.add("002212024010400310910588658796236156928"); list.add("002212024010400320610588659035085836288"); list.add("002212024010400342010588659596942577664"); list.add("002212024010400365610588660250073853952"); list.add("002212024010400410210588661284288557056"); list.add("002212024010400433110588661905427640320"); list.add("002212024010400451710588662350859669504"); list.add("002212024010400475610588663020835270656"); list.add("002212024010400493610588663437730918400"); list.add("002212024010400503810588663697253478400"); list.add("002212024010400591510588665866423414784"); list.add("002212024010401023710588666712173948928"); list.add("002212024010401034710588667007409164288"); list.add("002212024010401055710588667554027233280"); list.add("002212024010401143910588669740538507264"); list.add("002212024010401165510588670311160213504"); list.add("002212024010401233810588672000971706368"); list.add("002212024010401283410588673244107681792"); list.add("002212024010401332310588674455477268480"); list.add("002212024010401340410588674627292672000"); list.add("002212024010401365410588675342335328256"); list.add("002212024010401425510588676854986452992"); list.add("002212024010401485410588678362704523264"); list.add("002212024010401583210588680786429456384"); list.add("002212024010401591110588680949804503040"); list.add("002212024010402105810588683914319884288"); list.add("002212024010402140510588684697641259008"); list.add("002212024010402215710588686680073662464"); list.add("002212024010402283710588688354597257216"); list.add("002212024010402364110588690384500142080"); list.add("002212024010402390710588690999072927744"); list.add("002212024010402430510588691999265611776"); list.add("002212024010402494010588693654892212224"); list.add("002212024010403040810588697293035507712"); list.add("002212024010403074910588698221672251392"); list.add("002212024010403135610588699759113887744"); list.add("002212024010403280710588703328332001280"); list.add("002212024010403292010588703635602518016"); list.add("002212024010403324910588704514852110336"); list.add("002212024010403370210588705572664520704"); list.add("002212024010403491510588708648709386240"); list.add("002212024010403572010588710682913976320"); list.add("002212024010404050310588712623468285952"); list.add("002212024010404125110588714588209897472"); list.add("002212024010404134210588714803090305024"); list.add("002212024010404145710588715117217955840"); list.add("002212024010404254810588717844720906240"); list.add("002212024010404372010588720749016010752"); list.add("002212024010404414810588721874979500032"); list.add("002212024010404504310588724119215501312"); list.add("002212024010405135510588729957521145856"); list.add("002212024010405304710588734201643249664"); list.add("002212024010405400510588736538924486656"); list.add("002212024010405414910588736974880083968"); list.add("002212024010406091410588743877036748800"); list.add("002212024010407525110588769950634627072"); list.add("002212024010408132310588775121496150016"); list.add("002212024010408201610588776851766267904"); list.add("002212024010408214210588777214077419520"); list.add("002212024010408251710588778115817320448"); list.add("002212024010408394510588781755484180480"); list.add("002212024010408465710588783566198771712"); list.add("002212024010408495610588784319806509056"); list.add("002212024010408500410588784350162169856"); list.add("002212024010409000210588786859766411264"); list.add("002212024010409035010588787815886204928"); list.add("002212024010409250610588793169908035584"); list.add("002212024010409271810588793721313587200"); list.add("002212024010409313010588794776867532800"); list.add("002212024010409371010588796203646955520"); list.add("002212024010409440610588797949646848000"); list.add("002212024010409550710588800721011372032"); list.add("002212024010410285810588809239415709696"); list.add("002212024010410414210588812443227025408"); list.add("002212024010410583210588816679328690176"); list.add("002212024010411015410588817528988872704"); list.add("002212024010411212510588822441652498432"); list.add("002212024010411411110588827415709511680"); list.add("002212024010411435310588828094133989376"); list.add("002212024010411565010588831350880833536"); list.add("002212024010412042810588833272777191424"); list.add("002212024010412071910588833989970464768"); list.add("002212024010412084810588834363891478528"); list.add("002212024010412093610588834565740965888"); list.add("002212024010412171810588836503206473728"); list.add("002212024010412274410588839128307625984"); list.add("002212024010412373710588841616428351488"); list.add("002212024010412393210588842099127988224"); list.add("002212024010412480310588844239962894336"); list.add("002212024010412500410588844749923151872"); list.add("002212024010412524210588845413847552000"); list.add("002212024010412535710588845726919520256"); list.add("002212024010412562610588846350416769024"); list.add("002212024010412594710588847195830497280"); list.add("002212024010413025510588847985126653952"); list.add("002212024010413043010588848380453974016"); list.add("002212024010413081410588849322685304832"); list.add("002212024010413123510588850415461580800"); list.add("002212024010413154210588851201975562240"); list.add("002212024010413154510588851212544503808"); list.add("002212024010413155910588851272189415424"); list.add("002212024010413234310588853219577688064"); list.add("002212024010413254210588853715207917568"); list.add("002212024010413254710588853738347532288"); list.add("002212024010413313210588855183726022656"); list.add("002212024010413313810588855210779111424"); list.add("002212024010413510010588860085185310720"); list.add("002212024010413511310588860137892589568"); list.add("002212024010413595710588862334640283648"); list.add("002212024010414025010588863061961957376"); list.add("002212024010414043210588863489610067968"); list.add("002212024010414070410588864126856851456"); list.add("002212024010414085410588864588454137856"); list.add("002212024010414122110588865457069993984"); list.add("002212024010414275110588869359193075712"); list.add("002212024010414333110588870782290358272"); list.add("002212024010414335910588870899269857280"); list.add("002212024010414383710588872066029105152"); list.add("002212024010414454610588873867632963584"); list.add("002212024010414504310588875110597808128"); list.add("002212024010414525910588875682642522112"); list.add("002212024010414594410588877380671356928"); list.add("002212024010415014510588877887069949952"); list.add("002212024010415054010588878874057093120"); list.add("002212024010415144010588881139975303168"); list.add("002212024010415153110588881354085470208"); list.add("002212024010415162310588881573413236736"); list.add("002212024010415163610588881624463949824"); list.add("002212024010415255810588883982941360128"); list.add("002212024010415481710588889599671119872"); list.add("002212024010415502610588890140471324672"); list.add("002212024010416161310588896629546512384"); list.add("002212024010416201010588897622936109056"); list.add("002212024010416293110588899975141486592"); list.add("002212024010416315510588900579560935424"); list.add("002212024010416321110588900647651995648"); list.add("002212024010416353610588901507228102656"); list.add("002212024010417161710588911745625972736"); list.add("002212024010417285510588914925971582976"); list.add("002212024010417292010588915028813115392"); list.add("002212024010417590610588922521133756416"); list.add("002212024010418373610588932209649238016"); list.add("002212024010418403610588932966138101760"); list.add("002212024010418452910588934192599511040"); list.add("002212024010419022010588938435253964800"); list.add("002212024010419044510588939042245251072"); list.add("002212024010419153310588941761263022080"); list.add("002212024010419192410588942730586865664"); list.add("002212024010419312110588945735925477376"); list.add("002212024010419371410588947215447080960"); list.add("002212024010419375310588947378165104640"); list.add("002212024010419472110588949763756412928"); list.add("002212024010420161610588957039365414912"); list.add("002212024010420203610588958129662156800"); list.add("002212024010420224410588958666927927296"); list.add("002212024010420445710588964256213757952"); list.add("002212024010420453510588964415177879552"); list.add("002212024010421062510588969658403360768"); list.add("002212024010421133110588971448096288768"); list.add("002212024010421163610588972222184927232"); list.add("002212024010421413110588978491522510848"); list.add("002212024010421422610588978724201869312"); list.add("002212024010421445010588979327901470720"); list.add("002212024010421511910588980960245559296"); list.add("002212024010421554810588982086539431936"); list.add("002212024010422003210588983277551312896"); list.add("002212024010422082110588985248077680640"); list.add("002212024010422140210588986675402682368"); list.add("002212024010422145810588986911450755072"); list.add("002212024010422151510588986981235396608"); list.add("002212024010422185010588987883963224064"); list.add("002212024010422194810588988128021688320"); list.add("002212024010422200810588988211674501120"); list.add("002212024010422230910588988969819451392"); list.add("002212024010422265810588989932587429888"); list.add("002212024010422303210588990830041149440"); list.add("002212024010422305510588990925379584000"); list.add("002212024010422310910588990982251737088"); list.add("002212024010422320510588991218743005184"); list.add("002212024010422332410588991548393111552"); list.add("002212024010422343910588991863142854656"); list.add("002212024010422402510588993317260259328"); list.add("002212024010422443410588994359135186944"); list.add("002212024010422501310588995780608552960"); list.add("002212024010422514910588996186601828352"); list.add("002212024010422534710588996678934458368"); list.add("002212024010422541210588996785928695808"); list.add("002212024010422552310588997081644380160"); list.add("002212024010423003910588998406387552256"); list.add("002212024010423013810588998654248730624"); list.add("002212024010423125210589001480431071232"); list.add("002212024010423130710589001544737107968"); list.add("002212024010423142410589001868606660608"); list.add("002212024010423160010589002270959321088"); list.add("002212024010423213510589003674741837824"); list.add("002212024010423305010589006004284145664"); list.add("002212024010423314610589006240653750272"); list.add("002212024010423331910589006627053531136"); list.add("002212024010423392710589008173576708096"); list.add("002212024010423450410589009586705903616"); list.add("002212024010423464910589010028179353600"); list.add("002212024010423513710589011233077063680"); list.add("002212024010423531110589011628081573888"); list.add("002212024010423535510589011812305219584"); list.add("002212024010423550610589012110816415744"); list.add("002212024010423554010589012254302711808"); list.add("002212024010500002610589013454764355584"); list.add("002212024010500004810589013543764471808"); list.add("002212024010500042210589014442056310784"); list.add("002212024010500103410589016000910962688"); list.add("002212024010500133610589016765240819712"); list.add("002212024010500203110589018508770177024"); list.add("002212024010500204610589018570598584320"); list.add("002212024010500304210589021068007272448"); list.add("002212024010500314210589021320216817664"); list.add("002212024010500325110589021611721342976"); list.add("002212024010500382510589023009580298240"); list.add("002212024010500390410589023176143794176"); list.add("002212024010500463210589025053129093120"); list.add("002212024010500490210589025683025129472"); list.add("002212024010500532210589026775019171840"); list.add("002212024010501003610589028593228034048"); list.add("002212024010501010810589028727380267008"); list.add("002212024010501014210589028869839802368"); list.add("002212024010501092110589030795027443712"); list.add("002212024010501104310589031139174756352"); list.add("002212024010501122810589031582697635840"); list.add("002212024010501170510589032742384943104"); list.add("002212024010501193210589033358805807104"); list.add("002212024010501262810589035104355848192"); list.add("002212024010501375010589037963174096896"); list.add("002212024010501411910589038840845021184"); list.add("002212024010501484810589040725143699456"); list.add("002212024010501502910589041147654303744"); list.add("002212024010501532810589041900433117184"); list.add("002212024010501533910589041943373262848"); list.add("002212024010501554210589042460896989184"); list.add("002212024010502020310589044058218278912"); list.add("002212024010502173710589047974468214784"); list.add("002212024010502200210589048585977835520"); list.add("002212024010502211910589048905608491008"); list.add("002212024010502221010589049122732920832"); list.add("002212024010502252910589049957826801664"); list.add("002212024010502282310589050686871154688"); list.add("002212024010502352310589052446006177792"); list.add("002212024010502354510589052540545789952"); list.add("002212024010502395310589053577855086592"); list.add("002212024010502460910589055157758701568"); list.add("002212024010502481810589055698600046592"); list.add("002212024010502522310589056724022308864"); list.add("002212024010502542410589057234284081152"); list.add("002212024010502594510589058579083276288"); list.add("002212024010503081410589060715068485632"); list.add("002212024010503170110589062925383151616"); list.add("002212024010503211010589063968179056640"); list.add("002212024010503312110589066529991438336"); list.add("002212024010503424110589069383894929408"); list.add("002212024010504053710589075157191471104"); list.add("002212024010504130410589077029222592512"); list.add("002212024010504133410589077155771625472"); list.add("002212024010504380510589083323724836864"); list.add("002212024010504450110589085070824853504"); list.add("002212024010505133610589092264708247552"); list.add("002212024010505214110589094298972467200"); list.add("002212024010505420610589099435227045888"); list.add("002212024010505491810589101249993334784"); list.add("002212024010505562810589103049673117696"); list.add("002212024010506082610589106063516483584"); list.add("002212024010507312110589126930874265600"); list.add("002212024010508255610589140666381176832"); list.add("002212024010508460910589145755755327488"); list.add("002212024010508532010589147560578428928"); list.add("002212024010509055110589150712592986112"); list.add("002212024010509071910589151081590272000"); list.add("002212024010509143710589152919241846784"); list.add("002212024010509145910589153011554693120"); list.add("002212024010509221610589154843958403072"); list.add("002212024010509393410589159198032404480"); list.add("002212024010509563310589163470747639808"); list.add("002212024010510113510589167254706790400"); list.add("002212024010510291610589171706006450176"); list.add("002212024010511314610589187434570952704"); list.add("002212024010511324810589187692634558464"); list.add("002212024010511392010589189335379857408"); list.add("002212024010511494210589191945977970688"); list.add("002212024010511501910589192100277637120"); list.add("002212024010512003810589194697845080064"); list.add("002212024010512011010589194831659999232"); list.add("002212024010512053710589195950818336768"); list.add("002212024010512072810589196418525626368"); list.add("002212024010512111810589197379741659136"); list.add("002212024010512112010589197388933795840"); list.add("002212024010512213910589199984080179200"); list.add("002212024010512320010589202592104456192"); list.add("002212024010512322610589202699346284544"); list.add("002212024010512332910589202965105836032"); list.add("002212024010512402610589204713400733696"); list.add("002212024010512484510589206806332268544"); list.add("002212024010512492510589206973162352640"); list.add("002212024010512505910589207367567474688"); list.add("002212024010512531110589207922831634432"); list.add("002212024010512534710589208073216729088"); list.add("002212024010512541210589208175830827008"); list.add("002212024010512575910589209128617312256"); list.add("002212024010512590110589209388185124864"); list.add("002212024010513023510589210287674433536"); list.add("002212024010513080410589211668843003904"); list.add("002212024010513100910589212190577090560"); list.add("002212024010513112810589212522717278208"); list.add("002212024010513173010589214040020426752"); list.add("002212024010513182710589214280451973120"); list.add("002212024010513255110589216141903601664"); list.add("002212024010513303610589217337564577792"); list.add("002212024010513325110589217904844193792"); list.add("002212024010513355010589218655544700928"); list.add("002212024010513355410589218670399283200"); list.add("002212024010513384710589219395460227072"); list.add("002212024010513412510589220060334956544"); list.add("002212024010513490710589221996412522496"); list.add("002212024010513510610589222497730625536"); list.add("002212024010513522610589222832053518336"); list.add("002212024010513571710589224053587140608"); list.add("002212024010514072710589226611853590528"); list.add("002212024010514080210589226757986279424"); list.add("002212024010514114110589227674850598912"); list.add("002212024010514143510589228406555131904"); list.add("002212024010514162410589228864723070976"); list.add("002212024010514223710589230429782134784"); list.add("002212024010514264710589231478326886400"); list.add("002212024010514271410589231590077616128"); list.add("002212024010514292110589232121769865216"); list.add("002212024010514325310589233011074428928"); list.add("002212024010514394810589234753602625536"); list.add("002212024010514411510589235117631307776"); list.add("002212024010514442810589235928805941248"); list.add("002212024010514464310589236494089936896"); list.add("002212024010514535410589238299646590976"); list.add("002212024010514551610589238645828468736"); list.add("002212024010514565610589239065384308736"); list.add("002212024010515024110589240509994405888"); list.add("002212024010515024810589240542830198784"); list.add("002212024010515094110589242274584711168"); list.add("002212024010515170810589244149658005504"); list.add("002212024010515174910589244321934123008"); list.add("002212024010515194810589244820093755392"); list.add("002212024010515224410589245557709721600"); list.add("002212024010515234510589245811176284160"); list.add("002212024010515241110589245922546397184"); list.add("002212024010515304910589247590524878848"); list.add("002212024010515385710589249637761458176"); list.add("002212024010516010910589255224154955776"); list.add("002212024010516160810589258996078907392"); list.add("002212024010516202110589260057716031488"); list.add("002212024010516382310589264597199470592"); list.add("002212024010516443310589266148311998464"); list.add("002212024010517163910589274225387491328"); list.add("002212024010517352210589278933555175424"); list.add("002212024010517574910589284583607267328"); list.add("002212024010518193910589290080816443392"); list.add("002212024010518200210589290175764987904"); list.add("002212024010518223710589290826512138240"); list.add("002212024010518242810589291290928508928"); list.add("002212024010518350910589293981428817920"); list.add("002212024010518451010589296500511023104"); list.add("002212024010518523610589298372147003392"); list.add("002212024010518533410589298616650792960"); list.add("002212024010519132410589303606287990784"); list.add("002212024010519164910589304467021045760"); list.add("002212024010519253810589306685879164929"); list.add("002212024010519310910589308075004329984"); list.add("002212024010519501810589312892807946240"); list.add("002212024010519525210589313537010544640"); list.add("002212024010519542010589313906980409344"); list.add("002212024010520005710589315571766112256"); list.add("002212024010520172610589319722304516096"); list.add("002212024010520280110589322383465578496"); list.add("002212024010521003210589330566923255808"); list.add("002212024010521010210589330695130484736"); list.add("002212024010521033910589331352521175040"); list.add("002212024010521045510589331672066777088"); list.add("002212024010521064710589332140216791040"); list.add("002212024010521102110589333037217730561"); list.add("002212024010521120510589333474436562944"); list.add("002212024010521163210589334595364495360"); list.add("002212024010521180510589334982247784448"); list.add("002212024010521191710589335285877682176"); list.add("002212024010521215710589335955310125056"); list.add("002212024010521243710589336630162980864"); list.add("002212024010521260310589336986855567360"); list.add("002212024010521283910589337642684493824"); list.add("002212024010521390510589340269241794560"); list.add("002212024010521411910589340829132881920"); list.add("002212024010521440310589341520566005760"); list.add("002212024010521500710589343043894050816"); list.add("002212024010521540510589344044086034432"); list.add("002212024010521544410589344206303461376"); list.add("002212024010521584610589345223960940544"); list.add("002212024010522005410589345760569032704"); list.add("002212024010522113610589348451053580288"); list.add("002212024010522122110589348639476228096"); list.add("002212024010522140410589349072109031424"); list.add("002212024010522160810589349591804846080"); list.add("002212024010522183810589350220021039104"); list.add("002212024010522244110589351743159836672"); list.add("002212024010522265910589352323902763008"); list.add("002212024010522285610589352815900499968"); list.add("002212024010522303210589353217380954112"); list.add("002212024010522311010589353377536921600"); list.add("002212024010522312710589353447699816448"); list.add("002212024010522331810589353911762493440"); list.add("002212024010522374010589355013215395840"); list.add("002212024010522454610589357051690811392"); list.add("002212024010522465110589357322940645376"); list.add("002212024010522493710589358018476843008"); list.add("002212024010522534710589359068007215104"); list.add("002212024010522542110589359209077211136"); list.add("002212024010522543210589359254977540096"); list.add("002212024010522561210589359675420901376"); list.add("002212024010522580110589360131972952064"); list.add("002212024010522594810589360580073971712"); list.add("002212024010523030410589361405153931264"); list.add("002212024010523053410589362035142991872"); list.add("002212024010523070110589362396485898240"); list.add("002212024010523083610589362796304310272"); list.add("002212024010523235710589366660976906240"); list.add("002212024010523300010589368180628635648"); list.add("002212024010523345210589369407169830912"); list.add("002212024010523345510589369417501442048"); list.add("002212024010523383310589370333266219008"); list.add("002212024010523384110589370365823459328"); list.add("002212024010523392910589370568763867136"); list.add("002212024010523402110589370786352578560"); list.add("002212024010523413410589371093468938240"); list.add("002212024010523464510589372395456397312"); list.add("002212024010523470210589372469935087616"); list.add("002212024010523495010589373172694327296"); list.add("002212024010523501610589373284045750272"); list.add("002212024010523540010589374219669561344"); list.add("002212024010523565210589374944722116608"); list.add("002212024010600013010589376109944602624"); list.add("002212024010600035110589376702648668160"); list.add("002212024010600070410589377512040460288"); list.add("002212024010600071610589377561180753920"); list.add("002212024010600091610589378064666427392"); list.add("002212024010600154910589379710329929728"); list.add("002212024010600230610589381544310108160"); list.add("002212024010600312610589383641744375808"); list.add("002212024010600453910589387221062746112"); list.add("002212024010600531510589389133602299904"); list.add("002212024010600542510589389426859802624"); list.add("002212024010600570010589390076153806848"); list.add("002212024010601003110589390959793872896"); list.add("002212024010601015610589391318241546240"); list.add("002212024010601100810589393383099736064"); list.add("002212024010601130510589394124378775552"); list.add("002212024010601130810589394137058844672"); list.add("002212024010601131710589394176005410816"); list.add("002212024010601170010589395109892423680"); list.add("002212024010601233210589396753804730368"); list.add("002212024010601261310589397429114986496"); list.add("002212024010601332310589399230968655872"); list.add("002212024010601370810589400176240078848"); list.add("002212024010601424010589401568340193280"); list.add("002212024010601562110589405011012583424"); list.add("002212024010602014210589406356933451776"); list.add("002212024010602083110589408073426644992"); list.add("002212024010602121910589409028830494720"); list.add("002212024010602174810589410410276151296"); list.add("002212024010602192310589410808763088896"); list.add("002212024010602231710589411789206659072"); list.add("002212024010602271210589412776127430656"); list.add("002212024010602325110589414195692929024"); list.add("002212024010602370110589415247941718016"); list.add("002212024010602372210589415334899294208"); list.add("002212024010602391010589415785788014592"); list.add("002212024010602450010589417254350340096"); list.add("002212024010602491210589418310219182080"); list.add("002212024010602502910589418636950044672"); list.add("002212024010602514210589418942289264640"); list.add("002212024010602555710589420011488845824"); list.add("002212024010603035110589421998292713472"); list.add("002212024010603123610589424201229037568"); list.add("002212024010603164410589425240354684928"); list.add("002212024010603231510589426881224073216"); list.add("002212024010603240310589427081360478208"); list.add("002212024010603352910589429958798827520"); list.add("002212024010603391910589430922966507520"); list.add("002212024010603444710589432300526936064"); list.add("002212024010603583410589435768733810688"); list.add("002212024010604090810589438429796536320"); list.add("002212024010604101710589438718718750720"); list.add("002212024010604111310589438953239064576"); list.add("002212024010604172010589440492823740416"); list.add("002212024010604261610589442740024451072"); list.add("002212024010604312810589444048511987712"); list.add("002212024010604443910589447364697595904"); list.add("002212024010604473910589448120049958912"); list.add("002212024010604512510589449069745242112"); list.add("002212024010604515410589449191928090624"); list.add("002212024010605051110589452533064691712"); list.add("002212024010605054710589452683359186944"); list.add("002212024010605112910589454119555149824"); list.add("002212024010605351810589460112319225856"); list.add("002212024010605383010589460919506788352"); list.add("002212024010605443110589462432443568128"); list.add("002212024010605491510589463624122572800"); list.add("002212024010606190210589471118854545408"); list.add("002212024010606353610589475287118159872"); list.add("002212024010606361510589475451895181312"); list.add("002212024010606480810589478442204930048"); list.add("002212024010607254510589487906289340416"); list.add("002212024010607431010589492291999989760"); list.add("002212024010608010510589496798173732864"); list.add("002212024010608503810589509271939870720"); list.add("002212024010609002110589511714844540928"); list.add("002212024010609153410589515543312896000"); list.add("002212024010609192910589516530782945280"); list.add("002212024010609254110589518090058313728"); list.add("002212024010609424010589522362647031808"); list.add("002212024010609485310589523927488163840"); list.add("002212024010610122710589529861582757888"); list.add("002212024010610211110589532056457256960"); list.add("002212024010610290510589534045260902400"); list.add("002212024010610340710589535311481888768"); list.add("002212024010610340910589535321632911360"); list.add("002212024010610442610589537907910385664"); list.add("002212024010611011310589542134308610048"); list.add("002212024010611045210589543049185710080"); list.add("002212024010611195910589546854850961408"); list.add("002212024010611231610589547683290374144"); list.add("002212024010611252410589548217268686848"); list.add("002212024010611385510589551617906933760"); list.add("002212024010611592410589556775185227776"); list.add("002212024010612000010589556925285044224"); list.add("002212024010612041810589558006082334720"); list.add("002212024010612043010589558056580112384"); list.add("002212024010612165310589561174962720768"); list.add("002212024010612241710589563035499978752"); list.add("002212024010612245310589563188036091904"); list.add("002212024010612292710589564335383945216"); list.add("002212024010612331610589565298986487808"); list.add("002212024010612373410589566379696828416"); list.add("002212024010612390810589566772147499008"); list.add("002212024010612432710589567859951599616"); list.add("002212024010612432810589567864183652352"); list.add("002212024010612441210589568050364612608"); list.add("002212024010612444110589568171493142528"); list.add("002212024010612544610589570708187230208"); list.add("002212024010613093210589574424505204736"); list.add("002212024010613105510589574772548333568"); list.add("002212024010613172110589576390857445376"); list.add("002212024010613175910589576550564130816"); list.add("002212024010613203910589577222483648512"); list.add("002212024010613203910589577223338045440"); list.add("002212024010613245310589578287816736768"); list.add("002212024010613263110589578697720840192"); list.add("002212024010613301910589579655747477504"); list.add("002212024010613385410589581815947821056"); list.add("002212024010613403110589582222994550784"); list.add("002212024010613410810589582377752449024"); list.add("002212024010613433710589583001042137088"); list.add("002212024010613435010589583054673895424"); list.add("002212024010613442110589583185929023488"); list.add("002212024010613501210589584656801136640"); list.add("002212024010614034710589588077598253056"); list.add("002212024010614052710589588496044269568"); list.add("002212024010614064910589588840625848320"); list.add("002212024010614204510589592344618901504"); list.add("002212024010614254010589593582472986624"); list.add("002212024010614313410589595070659407872"); list.add("002212024010614360110589596188200673280"); list.add("002212024010614374510589596623842508800"); list.add("002212024010614414310589597622569623552"); list.add("002212024010614421210589597744889167872"); list.add("002212024010614490810589599489283424256"); list.add("002212024010614513910589600121873539072"); list.add("002212024010614515610589600196107284480"); list.add("002212024010614594210589602147626627072"); list.add("002212024010615085510589604468733489152"); list.add("002212024010615102510589604845156917248"); list.add("002212024010615102610589604847874408448"); list.add("002212024010615133210589605628238725120"); list.add("002212024010615264610589608961552715776"); list.add("002212024010615303810589609933971324928"); list.add("002212024010615333510589610674889928704"); list.add("002212024010615513310589615195148939264"); list.add("002212024010615535610589615796797931520"); list.add("002212024010616071610589619153674551296"); list.add("002212024010616100210589619849641525248"); list.add("002212024010616201210589622408442785792"); list.add("002212024010616382810589627004141641728"); list.add("002212024010616524710589630608723345408"); list.add("002212024010617035710589633418504372224"); list.add("002212024010617074510589634372056498176"); list.add("002212024010617231510589638273569595392"); list.add("002212024010618382510589657188679970816"); list.add("002212024010618421510589658154413625344"); list.add("002212024010618430810589658378495369216"); list.add("002212024010618462010589659182821548032"); list.add("002212024010618555310589661586059804672"); list.add("002212024010618580110589662123063881728"); list.add("002212024010619014010589663043057070080"); list.add("002212024010619094310589665065902055424"); list.add("002212024010619204410589667837930995712"); list.add("002212024010619232710589668523879022592"); list.add("002212024010619312610589670530508689408"); list.add("002212024010619344010589671346117320704"); list.add("002212024010620420110589688293441519616"); list.add("002212024010621152010589696681317851136"); list.add("002212024010621394910589702839389331456"); list.add("002212024010621415810589703381837791232"); list.add("002212024010621430410589703659756756992"); list.add("002212024010621530810589706192169738240"); list.add("002212024010621540310589706422641082368"); list.add("002212024010622135210589711411359719424"); list.add("002212024010622191310589712754776834048"); list.add("002212024010622231210589713756947857408"); list.add("002212024010622262310589714558042755072"); list.add("002212024010622274510589714904152113152"); list.add("002212024010622281010589715007577980928"); list.add("002212024010622290810589715251748347904"); list.add("002212024010622301810589715543699337216"); list.add("002212024010622305210589715687501299712"); list.add("002212024010622320310589715984508768256"); list.add("002212024010622324910589716178239062016"); list.add("002212024010622331110589716272912891904"); list.add("002212024010622334810589716426303586304"); list.add("002212024010622353810589716886411378688"); list.add("002212024010622363610589717129547227136"); list.add("002212024010622374210589717408275505152"); list.add("002212024010622374910589717439228002304"); list.add("002212024010622384810589717685584424960"); list.add("002212024010622385410589717710221119488"); list.add("002212024010622394910589717939392282624"); list.add("002212024010622422110589718577350533120"); list.add("002212024010622422510589718593371353088"); list.add("002212024010622435810589718984488484864"); list.add("002212024010622451010589719285401022464"); list.add("002212024010623052510589724384082100224"); list.add("002212024010623101310589725592158060544"); list.add("002212024010623202610589728161232363520"); list.add("002212024010623202710589728167194198016"); list.add("002212024010623215010589728512734957568"); list.add("002212024010623273010589729939118862336"); list.add("002212024010623321910589731151037112320"); list.add("002212024010623323210589731206745858048"); list.add("002212024010623325110589731288926134272"); list.add("002212024010623371810589732407184445440"); list.add("002212024010623492210589735442529476608"); list.add("002212024010623492910589735474814894080"); list.add("002212024010623521610589736175115997184"); list.add("002212024010623523310589736243286081536"); list.add("002212024010623533810589736517534593024"); list.add("002212024010700051810589739452096413696"); list.add("002212024010700070210589739890157850624"); list.add("002212024010700110610589740911842754560"); list.add("002212024010700130110589741396065034240"); list.add("002212024010700164210589742322985058304"); list.add("002212024010700201210589743205015101440"); list.add("002212024010700210610589743428682481664"); list.add("002212024010700220410589743673611132928"); list.add("002212024010700302610589745780308815872"); list.add("002212024010700373510589747576196505600"); list.add("002212024010700374410589747616397643776"); list.add("002212024010700452310589749540467019776"); list.add("002212024010700471710589750017887866880"); list.add("002212024010700505810589750945278705664"); list.add("002212024010700514210589751130269360128"); list.add("002212024010700535910589751703186120704"); list.add("002212024010700541210589751757592952832"); list.add("002212024010700544710589751908065878016"); list.add("002212024010700590610589752994582999040"); list.add("002212024010701011410589753528141832192"); list.add("002212024010701143910589756906535845888"); list.add("002212024010701200710589758281988599808"); list.add("002212024010701262310589759859615268864"); list.add("002212024010701355510589762258872680448"); list.add("002212024010701504210589765977495416832"); list.add("002212024010701511110589766101513261056"); list.add("002212024010701515510589766284020011008"); list.add("002212024010701520310589766318326489088"); list.add("002212024010701555510589767289902190592"); list.add("002212024010702060410589769844209426432"); list.add("002212024010702063510589769975569567744"); list.add("002212024010702084010589770500030111744"); list.add("002212024010702103410589770976531415040"); list.add("002212024010702120610589771364704804864"); list.add("002212024010702163410589772489331507200"); list.add("002212024010702191210589773148498894848"); list.add("002212024010702192710589773213129515008"); list.add("002212024010702210910589773641297518592"); list.add("002212024010702212910589773723880640512"); list.add("002212024010702321410589776431519047680"); list.add("002212024010702450110589779646297911296"); list.add("002212024010702454910589779847598424064"); list.add("002212024010702470310589780158391353344"); list.add("002212024010702491410589780710382731264"); list.add("002212024010703065010589785137843896320"); list.add("002212024010703093710589785839547174912"); list.add("002212024010703221210589789003667587072"); list.add("002212024010703230010589789204989181952"); list.add("002212024010703282010589790547234156544"); list.add("002212024010703295410589790944057257984"); list.add("002212024010703360310589792490562191360"); list.add("002212024010703402810589793603845996544"); list.add("002212024010703421310589794040510980096"); list.add("002212024010703435410589794466359390208"); list.add("002212024010703535210589796975471853568"); list.add("002212024010704021310589799076811071488"); list.add("002212024010704403310589808723351203840"); list.add("002212024010704421310589809139799670784"); list.add("002212024010704421810589809161250217984"); list.add("002212024010704423410589809231025393664"); list.add("002212024010704430610589809364007223296"); list.add("002212024010705095010589816093130301440"); list.add("002212024010705231710589819477004759040"); list.add("002212024010705265610589820393221771264"); list.add("002212024010705410110589823938748940288"); list.add("002212024010705415610589824167914352640"); list.add("002212024010705451010589824984017522688"); list.add("002212024010705472810589825563168321536"); list.add("002212024010706261910589835337547894784"); list.add("002212024010706420010589839287397998592"); list.add("002212024010706472910589840664173223936"); list.add("002212024010707012510589844173770547200"); list.add("002212024010707063710589845482143784960"); list.add("002212024010707092510589846184051593216"); list.add("002212024010707280710589850889918246912"); list.add("002212024010707414210589854309525073920"); list.add("002212024010708020410589859435310579712"); list.add("002212024010708053010589860300480827392"); list.add("002212024010708110010589861683537059840"); list.add("002212024010708253910589865370982907904"); list.add("002212024010709184210589878720839921664"); list.add("002212024010709194010589878963811758080"); list.add("002212024010709244210589880232463138816"); list.add("002212024010709280910589881097388146688"); list.add("002212024010709385110589883792330162176"); list.add("002212024010710130910589892423691739136"); list.add("002212024010710160610589893165095956480"); list.add("002212024010710373710589898582620352512"); list.add("002212024010710515810589902192676003840"); list.add("002212024010710595910589904210154000384"); list.add("002212024010711193310589909133158187008"); list.add("002212024010711252810589910621842923520"); list.add("002212024010711253610589910655658872832"); list.add("002212024010711345010589912978535256064"); list.add("002212024010711353910589913184573792256"); list.add("002212024010712343510589928018400100352"); list.add("002212024010713345210589943187045187584"); list.add("002212024010713383910589944140303114240"); list.add("002212024010713581610589949075431292928"); list.add("002212024010714322510589957670747594752"); list.add("002212024010714400410589959595709964288"); list.add("002212024010715322110589972753592078336"); list.add("002212024010717190210589999602466750464"); list.add("002212024010717234210590000775195373568"); list.add("002212024010717310210590002619104927744"); list.add("002212024010717364610590004064964825088"); list.add("002212024010717414610590005321440280576"); list.add("002212024010717415910590005375534407680"); list.add("002212024010717423610590005531742683136"); list.add("002212024010717440610590005910021713920"); list.add("002212024010717502710590007506441175040"); list.add("002212024010717535010590008358132350976"); list.add("002212024010717550010590008650890514432"); list.add("002212024010718041310590010969621102592"); list.add("002212024010718251710590016272266625024"); list.add("002212024010718461510590021549801852928"); list.add("002212024010718530910590023287870685184"); list.add("002212024010719204310590030223537168384"); list.add("002212024010719224310590030728556535808"); list.add("002212024010719343010590033693081796608"); list.add("002212024010719470310590036851802710016"); list.add("002212024010719501210590037642877841408"); list.add("002212024010720124710590043324928057344"); list.add("002212024010720151910590043961996279808"); list.add("002212024010720330710590048442605531136"); list.add("002212024010720352410590049019987582976"); list.add("002212024010720404510590050364631113728"); list.add("002212024010720440410590051197745299456"); list.add("002212024010720445710590051423381073920"); list.add("002212024010720453010590051559141392384"); list.add("002212024010721035310590056188155641856"); list.add("002212024010721163110590059366026059776"); list.add("002212024010721233110590061128053620736"); list.add("002212024010721275910590062252197945344"); list.add("002212024010721332610590063624006516736"); list.add("002212024010721363110590064400707919872"); list.add("002212024010721435810590066274562985984"); list.add("002212024010721493710590067693280231424"); list.add("002212024010721521710590068365526048768"); list.add("002212024010721530010590068545591123968"); list.add("002212024010721591510590070118637932544"); list.add("002212024010722040710590071342813528064"); list.add("002212024010722061210590071868423610368"); list.add("002212024010722091710590072644595654656"); list.add("002212024010722124410590073512931975168"); list.add("002212024010722152810590074202306359296"); list.add("002212024010722183510590074985313034240"); list.add("002212024010722193910590075253992816640"); list.add("002212024010722213010590075721024122880"); list.add("002212024010722265910590077100648984576"); list.add("002212024010722275510590077333523070976"); list.add("002212024010722281910590077435798392832"); list.add("002212024010722290610590077631645810688"); list.add("002212024010722301110590077906184396800"); list.add("002212024010722303210590077993261039616"); list.add("002212024010722323510590078509325312000"); list.add("002212024010722342510590078971363094528"); list.add("002212024010722345710590079103860985856"); list.add("002212024010722404910590080581484511232"); list.add("002212024010722432010590081214225432576"); list.add("002212024010722472710590082249367265280"); list.add("002212024010722495610590082874537390080"); list.add("002212024010722505410590083118406770688"); list.add("002212024010723014410590085845688766464"); list.add("002212024010723072110590087256683294720"); list.add("002212024010723154510590089372902600704"); list.add("002212024010723164110590089605171994624"); list.add("002212024010723193610590090338746957824"); list.add("002212024010723233410590091340268535808"); list.add("002212024010723281310590092508751237120"); list.add("002212024010723371510590094783245803520"); list.add("002212024010723403410590095615741698048"); list.add("002212024010723434310590096409812250624"); list.add("002212024010723523710590098651075616768"); list.add("002212024010723553910590099410773123072"); list.add("002212024010723590110590100260010631168"); list.add("002212024010723591310590100312099115008"); list.add("002212024010723591910590100334225334272"); list.add("002212024010723592110590100343727947776"); list.add("002212024010800071310590102324883267584"); list.add("002212024010800102410590103124545830912"); list.add("002212024010800122510590103630678966272"); list.add("002212024010800191610590105356313014272"); list.add("002212024010800193510590105437340807168"); list.add("002212024010800213010590105918553968640"); list.add("002212024010800225310590106266347962368"); list.add("002212024010800264210590107225502875648"); list.add("002212024010800270010590107303673954304"); list.add("002212024010800292910590107926454898688"); list.add("002212024010800310910590108347892957184"); list.add("002212024010800415410590111050155061248"); list.add("002212024010800450610590111856681136128"); list.add("002212024010800485810590112831161802752"); list.add("002212024010800504210590113267470807040"); list.add("002212024010800593710590115512463753216"); list.add("002212024010801111410590118433508384768"); list.add("002212024010801145910590119376720916480"); list.add("002212024010801184110590120307249913856"); list.add("002212024010801242510590121751199711232"); list.add("002212024010801244510590121836839010304"); list.add("002212024010801301910590123235302375424"); list.add("002212024010801342010590124245294088192"); list.add("002212024010801345310590124385111646208"); list.add("002212024010801361410590124724875001856"); list.add("002212024010801424710590126372199636992"); list.add("002212024010801434810590126627896991744"); list.add("002212024010801474210590127611030544384"); list.add("002212024010801594410590130640347561984"); list.add("002212024010802032410590131562601349120"); list.add("002212024010802040110590131717520326656"); list.add("002212024010802095710590133211868790784"); list.add("002212024010802133710590134134420647936"); list.add("002212024010802344010590139430440804352"); list.add("002212024010802382810590140386782375936"); list.add("002212024010802385910590140517051621376"); list.add("002212024010802455810590142275115921408"); list.add("002212024010802495810590143280044769280"); list.add("002212024010802525310590144015643029504"); list.add("002212024010802553010590144671754862592"); list.add("002212024010803121210590148875229945856"); list.add("002212024010803192110590150676541714432"); list.add("002212024010803223210590151476027224064"); list.add("002212024010803465310590157604408901632"); list.add("002212024010803502810590158506067734528"); list.add("002212024010803515710590158878664654848"); list.add("002212024010803542110590159481767702528"); list.add("002212024010804192810590165804122009600"); list.add("002212024010804230010590166692550922240"); list.add("002212024010804251910590167275596513280"); list.add("002212024010804281110590167995959586816"); list.add("002212024010804423710590171630200102912"); list.add("002212024010805224110590181713142652928"); list.add("002212024010805290710590183331334090752"); list.add("002212024010805330510590184329108508672"); list.add("002212024010805355710590185052734337024"); list.add("002212024010805491110590188382434983936"); list.add("002212024010806054810590192564536721408"); list.add("002212024010806195710590196125747478528"); list.add("002212024010806210810590196422449152000"); list.add("002212024010806403810590201330703572992"); list.add("002212024010806595310590206172410400768"); list.add("002212024010807042910590207330361655296"); list.add("002212024010808300710590228882899951616"); list.add("002212024010808313710590229261229498368"); list.add("002212024010808391710590231188308340736"); list.add("002212024010808515010590234349422288896"); list.add("002212024010808532810590234757585797120"); list.add("002212024010809045710590237648025559040"); list.add("002212024010809050010590237660892000256"); list.add("002212024010809193110590241313271169024"); list.add("002212024010809580610590251024417665024"); list.add("002212024010809594810590251453387997184"); list.add("002212024010810114710590254466290659328"); list.add("002212024010810145410590255251655589888"); list.add("002212024010810154610590255471316475904"); list.add("002212024010810184710590256229872078848"); list.add("002212024010810211310590256841171779584"); list.add("002212024010810315710590259541401780224"); list.add("002212024010810323110590259685622120448"); list.add("002212024010810415710590262058500993024"); list.add("002212024010810433910590262485151211520"); list.add("002212024010810540010590265089867653120"); list.add("002212024010810553210590265477188136960"); list.add("002212024010811031510590267420098801664"); list.add("002212024010811200410590271652822626304"); list.add("002212024010811272010590273479060336640"); list.add("002212024010811422310590277266932084736"); list.add("002212024010811493710590279088306331648"); list.add("002212024010812004810590281900775907328"); list.add("002212024010812020410590282219613626368"); list.add("002212024010812051910590283040666689536"); list.add("002212024010812060210590283218978701312"); list.add("002212024010812072910590283583948836864"); list.add("002212024010812112410590284572331716608"); list.add("002212024010812155910590285723684941824"); list.add("002212024010812165210590285946767388672"); list.add("002212024010812183910590286395212308480"); list.add("002212024010812310510590289523789246464"); list.add("002212024010812313110590289631199211520"); list.add("002212024010812490610590294059540373504"); list.add("002212024010812493410590294173217173504"); list.add("002212024010812570110590296049388036096"); list.add("002212024010813060410590298326083866624"); list.add("002212024010813100710590299345958719488"); list.add("002212024010813111010590299612890275840"); list.add("002212024010813193210590301717045485568"); list.add("002212024010813245610590303076562743296"); list.add("002212024010813271210590303646315282432"); list.add("002212024010813362510590305965269409792"); list.add("002212024010813371110590306157201756160"); list.add("002212024010813431210590307673934249984"); list.add("002212024010813471910590308706497863680"); list.add("002212024010813473210590308762548686848"); list.add("002212024010813474110590308800536023040"); list.add("002212024010813474910590308835391164416"); list.add("002212024010813475210590308845054365696"); list.add("002212024010813512410590309737667502080"); list.add("002212024010813521910590309965879148544"); list.add("002212024010813522810590310004390404096"); list.add("002212024010813524410590310070491394048"); list.add("002212024010813531510590310202315227136"); list.add("002212024010813553210590310777985785857"); list.add("002212024010813562810590311012814143488"); list.add("002212024010813564610590311086897745920"); list.add("002212024010814004210590312074484760576"); list.add("002212024010814134410590315358217142272"); list.add("002212024010814161410590315985666318336"); list.add("002212024010814184010590316599832375296"); list.add("002212024010814323810590320111027265536"); list.add("002212024010814381510590321525488189440"); list.add("002212024010814391610590321782454059008"); list.add("002212024010814423010590322596919537664"); list.add("002212024010814464010590323643712958464"); list.add("002212024010814470510590323748231913472"); list.add("002212024010814474910590323935688531968"); list.add("002212024010814485910590324228535705600"); list.add("002212024010814512610590324845418803200"); list.add("002212024010814542210590325581808779264"); list.add("002212024010814545110590325705134931968"); list.add("002212024010814572010590326327557947392"); list.add("002212024010815005710590327238375342080"); list.add("002212024010815013610590327401574866944"); list.add("002212024010815040210590328015666057216"); list.add("002212024010815043310590328143011061760"); list.add("002212024010815054610590328451953176576"); list.add("002212024010815073910590328924637429760"); list.add("002212024010815102510590329623303618560"); list.add("002212024010815103310590329655575011328"); list.add("002212024010815111610590329833940561920"); list.add("002212024010815152610590330882034335744"); list.add("002212024010815174510590331466781392896"); list.add("002212024010815270410590333810714071040"); list.add("002212024010815292910590334421634756608"); list.add("002212024010815352810590335924493557760"); list.add("002212024010815373510590336457495392256"); list.add("002212024010815380110590336566847610880"); list.add("002212024010815443410590338215098753024"); list.add("002212024010815445310590338297026818048"); list.add("002212024010815504410590339768892530688"); list.add("002212024010815532610590340445704540160"); list.add("002212024010816004210590342273735073792"); list.add("002212024010816024010590342771186233344"); list.add("002212024010816095210590344581993504768"); list.add("002212024010816142110590345709632978944"); list.add("002212024010816212410590347482998177792"); list.add("002212024010816225110590347849928892416"); list.add("002212024010816281910590349225251610624"); list.add("002212024010816451810590353498252931072"); list.add("002212024010816531310590355490309349376"); list.add("002212024010816551910590356020930904064"); list.add("002212024010817124410590360404182855680"); list.add("002212024010817211010590362524015591424"); list.add("002212024010817222310590362829720592384"); list.add("002212024010817403510590367413312983040"); list.add("002212024010817555510590371269322063872"); list.add("002212024010818023210590372936060698624"); list.add("002212024010818325410590380577805312000"); list.add("002212024010818404110590382535754420224"); list.add("002212024010819034310590388332516433920"); list.add("002212024010819080410590389426115563520"); list.add("002212024010819142510590391023809843200"); list.add("002212024010819145510590391151048638464"); list.add("002212024010819400810590397498670346240"); list.add("002212024010819490310590399740018728960"); list.add("002212024010820032410590403353893969920"); list.add("002212024010820310010590410298804703232"); list.add("002212024010820353610590411457654927360"); list.add("002212024010820382210590412154407383040"); list.add("002212024010820390910590412350824128512"); list.add("002212024010820591710590417415645016064"); list.add("002212024010821000510590417619258167296"); list.add("002212024010821001610590417663172919296"); list.add("002212024010821005410590417822556471296"); list.add("002212024010821121910590420697085157376"); list.add("002212024010821234010590423550779494400"); list.add("002212024010821331010590425943053443072"); list.add("002212024010821405610590427899180359680"); list.add("002212024010821473110590429556433756160"); list.add("002212024010821482710590429788848979968"); list.add("002212024010821531210590430986295472128"); list.add("002212024010821540510590431205855834112"); list.add("002212024010822003410590432838096879616"); list.add("002212024010822011210590432996569210880"); list.add("002212024010822034310590433631207202816"); list.add("002212024010822034410590433634265538560"); list.add("002212024010822050110590433958514753536"); list.add("002212024010822064210590434384447627264"); list.add("002212024010822101110590435260043137024"); list.add("002212024010822102010590435296366284800"); list.add("002212024010822125410590435942072852480"); list.add("002212024010822171310590437028939104256"); list.add("002212024010822173710590437130087936000"); list.add("002212024010822264910590439445896261632"); list.add("002212024010822310210590440507749785600"); list.add("002212024010822313710590440651565137920"); list.add("002212024010822331010590441042571542528"); list.add("002212024010822331910590441082414702592"); list.add("002212024010822343110590441384233492480"); list.add("002212024010822361010590441798172127232"); list.add("002212024010822383110590442388519112704"); list.add("002212024010822421310590443320262111232"); list.add("002212024010822444910590443974146551808"); list.add("002212024010822494410590445212936372224"); list.add("002212024010822563610590446940300869632"); list.add("002212024010822583710590447447379521536"); list.add("002212024010823011210590448097680465920"); list.add("002212024010823025110590448511855214592"); list.add("002212024010823090810590450092350119936"); list.add("002212024010823094710590450256418275328"); list.add("002212024010823095410590450288457719808"); list.add("002212024010823125810590451058599043072"); list.add("002212024010823215710590453318070607872"); list.add("002212024010823222710590453445600149504"); list.add("002212024010823240110590453839313137664"); list.add("002212024010823242910590453957897859072"); list.add("002212024010823262510590454442869288960"); list.add("002212024010823270810590454623623950336"); list.add("002212024010823335710590456340679696384"); list.add("002212024010823375110590457319273771008"); list.add("002212024010823391210590457660207734784"); list.add("002212024010823494510590460314902441984"); list.add("002212024010823504710590460575922556928"); list.add("002212024010823545610590461619908993024"); list.add("002212024010900031310590463705357582336"); list.add("002212024010900061210590464454685736960"); list.add("002212024010900062210590464498323058688"); list.add("002212024010900112910590465786217873408"); list.add("002212024010900134910590466371026518016"); list.add("002212024010900195810590467921698299904"); list.add("002212024010900200410590467946952241152"); list.add("002212024010900250110590469189727408128"); list.add("002212024010900250510590469209285836800"); list.add("002212024010900261210590469487702933504"); list.add("002212024010900321410590471004976041984"); list.add("002212024010900345610590471687531245568"); list.add("002212024010900370410590472224881360896"); list.add("002212024010900383610590472607520239616"); list.add("002212024010900491110590475272403709952"); list.add("002212024010900524210590476157246078976"); list.add("002212024010900564110590477161018523648"); list.add("002212024010901105010590480720986644480"); list.add("002212024010901121010590481054750724096"); list.add("002212024010901171210590482323064422400"); list.add("002212024010901192310590482871070760960"); list.add("002212024010901243510590484180922105856"); list.add("002212024010901282410590485142526320640"); list.add("002212024010901293610590485444719177728"); list.add("002212024010901301210590485593496465408"); list.add("002212024010901301310590485600811450368"); list.add("002212024010901324310590486227744755712"); list.add("002212024010901391510590487871404474368"); list.add("002212024010901411910590488390472835072"); list.add("002212024010901433010590488942400864256"); list.add("002212024010901445610590489303306244096"); list.add("002212024010901510510590490848951992320"); list.add("002212024010901534310590491514812801024"); list.add("002212024010902045110590494314465271808"); list.add("002212024010902065210590494823027146752"); list.add("002212024010902153810590497027143090176"); list.add("002212024010902161010590497162695520256"); list.add("002212024010902235910590499131919945728"); list.add("002212024010902240310590499147194130432"); list.add("002212024010902242110590499224172191744"); list.add("002212024010902283610590500290335715328"); list.add("002212024010902334210590501573492834304"); list.add("002212024010902385610590502894119661568"); list.add("002212024010902500110590505680336363520"); list.add("002212024010902515310590506149744041984"); list.add("002212024010902522510590506283847221248"); list.add("002212024010902545210590506900521320448"); list.add("002212024010903020010590508696510513152"); list.add("002212024010903101010590510751798947840"); list.add("002212024010903154010590512137287704576"); list.add("002212024010903162010590512303149776896"); list.add("002212024010903185410590512948285743104"); list.add("002212024010903382010590517842099023872"); list.add("002212024010904014110590523717037948928"); list.add("002212024010904071310590525107808509952"); list.add("002212024010904212510590528683686084608"); list.add("002212024010904251610590529650350718976"); list.add("002212024010904344210590532026650177536"); list.add("002212024010904474510590535311798771712"); list.add("002212024010904484210590535547229405184"); list.add("002212024010904535410590536856678965248"); list.add("002212024010905090410590540674307031040"); list.add("002212024010905193610590543327161311232"); list.add("002212024010905212610590543787000692736"); list.add("002212024010905264810590545136883494912"); list.add("002212024010905410910590548748219121664"); list.add("002212024010905440410590549481229496320"); list.add("002212024010905555110590552449035956224"); list.add("002212024010905582810590553106913632256"); list.add("002212024010906123610590556661446119424"); list.add("002212024010906215310590558997752143872"); list.add("002212024010908141910590587292976525312"); list.add("002212024010908242210590589822999994368"); list.add("002212024010908311010590591534489382912"); list.add("002212024010908343810590592406820728832"); list.add("002212024010908564810590597985567096832"); list.add("002212024010908571110590598080052371456"); list.add("002212024010909005010590599000185794560"); list.add("002212024010909005610590599026321633280"); list.add("002212024010909055710590600286676430848"); list.add("002212024010909110510590601580139347968"); list.add("002212024010909211710590604146827317248"); list.add("002212024010909360310590607860915175424"); list.add("002212024010909430410590609628427984896"); list.add("002212024010909455010590610323833344000"); list.add("002212024010909483510590611015834308608"); list.add("002212024010910265210590620651966791680"); list.add("002212024010910281910590621015688859648"); list.add("002212024010910293810590621347634466816"); list.add("002212024010910321710590622012817113088"); list.add("002212024010910322610590622051915358208"); list.add("002212024010910373810590623359318720512"); list.add("002212024010910395710590623943375491072"); list.add("002212024010911045010590630207767388160"); list.add("002212024010911162510590633119834030080"); list.add("002212024010911254610590635475752812544"); list.add("002212024010911291810590636361482600448"); list.add("002212024010911314110590636965015695360"); list.add("002212024010911354310590637976910241792"); list.add("002212024010911411410590639366401724416"); list.add("002212024010911462810590640684912287744"); list.add("002212024010911592310590643932309528576"); list.add("002212024010912000010590644088485715968"); list.add("002212024010912004810590644288481435648"); list.add("002212024010912005810590644334299021312"); list.add("002212024010912014710590644537979203584"); list.add("002212024010912030410590644862194925568"); list.add("002212024010912074910590646055552245760"); list.add("002212024010912152410590647963923623936"); list.add("002212024010912243810590650286403952640"); list.add("002212024010912263510590650780245499904"); list.add("002212024010912265710590650870041509888"); list.add("002212024010912295910590651636196995072"); list.add("002212024010912330410590652412750761984"); list.add("002212024010912375710590653638914068480"); list.add("002212024010912422910590654781242417152"); list.add("002212024010912470410590655932371415040"); list.add("002212024010912583410590658828425269248"); list.add("002212024010913121010590662251194023936"); list.add("002212024010913123110590662340542562304"); list.add("002212024010913130510590662479497338880"); list.add("002212024010913171310590663519737516032"); list.add("002212024010913204410590664405585240064"); list.add("002212024010913205710590664461471821824"); list.add("002212024010913245410590665456868904960"); list.add("002212024010913300210590666746139234304"); list.add("002212024010913311910590667069491978240"); list.add("002212024010913390610590669028560560128"); list.add("002212024010913401710590669327032897536"); list.add("002212024010913482810590671386053009408"); list.add("002212024010913510610590672048268361728"); list.add("002212024010913535510590672757380284416"); list.add("002212024010913551110590673075054563328"); list.add("002212024010913555210590673248453140480"); list.add("002212024010913593610590674189033766912"); list.add("002212024010914162710590678426552115200"); list.add("002212024010914202210590679413604380672"); list.add("002212024010914290010590681587603832832"); list.add("002212024010914311110590682135413903360"); list.add("002212024010914314510590682278111850496"); list.add("002212024010914341010590682884473991168"); list.add("002212024010914410010590684604605034496"); list.add("002212024010914415210590684824576991232"); list.add("002212024010914505610590687104737591296"); list.add("002212024010914595810590689379439550464"); list.add("002212024010915021210590689941466157056"); list.add("002212024010915052610590690756739969024"); list.add("002212024010915134110590692831973957632"); list.add("002212024010915190510590694190510882816"); list.add("002212024010915243910590695592167587840"); list.add("002212024010915325310590697664876650496"); list.add("002212024010915383810590699108915113984"); list.add("002212024010915431010590700251155247104"); list.add("002212024010915461710590701036033638400"); list.add("002212024010915552210590703320020660224"); list.add("002212024010916051710590705816156016640"); list.add("002212024010916081010590706540879552512"); list.add("002212024010916120410590707524941496320"); list.add("002212024010916155710590708501909020672"); list.add("002212024010916210010590709771257446400"); list.add("002212024010916362910590713666465628160"); list.add("002212024010916401110590714598399922176"); list.add("002212024010916481910590716645458874368"); list.add("002212024010917102110590722189853392896"); list.add("002212024010918441910590745840141557760"); list.add("002212024010919010110590750041641938944"); list.add("002212024010919033110590750671660580864"); list.add("002212024010919064910590751502093295616"); list.add("002212024010919145610590753542747832320"); list.add("002212024010919242710590755938095341568"); list.add("002212024010919281910590756911514058752"); list.add("002212024010919283310590756971542052864"); list.add("002212024010919323110590757968704708608"); list.add("002212024010919470910590761650771812352"); list.add("002212024010919480610590761889872306176"); list.add("002212024010920071510590766710563049472"); list.add("002212024010920102210590767492676657152"); list.add("002212024010920134410590768339706867712"); list.add("002212024010920190510590769689441447936"); list.add("002212024010920251010590771218485444608"); list.add("002212024010920282610590772038587420672"); list.add("002212024010920285110590772143889678336"); list.add("002212024010920424510590775643919917056"); list.add("002212024010920471610590776781427167232"); list.add("002212024010920575310590779452336209920"); list.add("002212024010921160410590784026477264896"); list.add("002212024010921212410590785371605200896"); list.add("002212024010921214610590785460781391872"); list.add("002212024010921233610590785922573385728"); list.add("002212024010921411710590790374513422336"); list.add("002212024010921474910590792018315649024"); list.add("002212024010921510310590792831410151424"); list.add("002212024010921552710590793939067117568"); list.add("002212024010921573410590794473192906752"); list.add("002212024010921580010590794581518327808"); list.add("002212024010921595210590795050053783552"); list.add("002212024010922034110590796009720782848"); list.add("002212024010922040210590796100568854528"); list.add("002212024010922131010590798399208251392"); list.add("002212024010922133310590798495511113728"); list.add("002212024010922152410590798961589915648"); list.add("002212024010922155610590799093416701952"); list.add("002212024010922212110590800457111011328"); list.add("002212024010922250310590801389583007744"); list.add("002212024010922270010590801878517637120"); list.add("002212024010922273210590802013141344256"); list.add("002212024010922281210590802182662529024"); list.add("002212024010922291110590802427537989632"); list.add("002212024010922293210590802516385968128"); list.add("002212024010922293710590802538274910208"); list.add("002212024010922311810590802960169500672"); list.add("002212024010922342310590803737298534400"); list.add("002212024010922353610590804043124076544"); list.add("002212024010922462410590806762220462080"); list.add("002212024010922520010590808168440569856"); list.add("002212024010923035510590811170592358400"); list.add("002212024010923055610590811675667968000"); list.add("002212024010923072510590812050403864576"); list.add("002212024010923073510590812090689429504"); list.add("002212024010923091810590812524296388608"); list.add("002212024010923101810590812776266039296"); list.add("002212024010923130910590813491984433152"); list.add("002212024010923230310590815982685499392"); list.add("002212024010923232010590816054209662976"); list.add("002212024010923234910590816177583226880"); list.add("002212024010923282610590817338270838784"); list.add("002212024010923290010590817482250846208"); list.add("002212024010923320210590818243713150976"); list.add("002212024010923322810590818352092000256"); list.add("002212024010923333410590818632976338944"); list.add("002212024010923393910590820162781425664"); list.add("002212024010923402110590820339757129728"); list.add("002212024010923482810590822378845331456"); list.add("002212024010923571910590824606445375488"); list.add("002212024011000052710590826655052976128"); list.add("002212024011000093610590827697400823808"); list.add("002212024011000122610590828412169977856"); list.add("002212024011000124210590828479628271616"); list.add("002212024011000193210590830200225103872"); list.add("002212024011000200410590830334078730240"); list.add("002212024011000213910590830731802804224"); list.add("002212024011000260410590831843260395520"); list.add("002212024011000302610590832942363115520"); list.add("002212024011000344310590834020659503104"); list.add("002212024011000344410590834022819569664"); list.add("002212024011000543510590839017609216000"); list.add("002212024011000551410590839183032565760"); list.add("002212024011000562010590839459080466432"); list.add("002212024011000583210590840014753607680"); list.add("002212024011001052610590841748621213696"); list.add("002212024011001103510590843044530262016"); list.add("002212024011001162910590844531119169536"); list.add("002212024011001203510590845560642961408"); list.add("002212024011001233310590846309367111680"); list.add("002212024011001263910590847090639699968"); list.add("002212024011001374510590849880887853056"); list.add("002212024011001422210590851045866065920"); list.add("002212024011001434310590851385364144128"); list.add("002212024011001563210590854609652453376"); list.add("002212024011002015010590855942761459712"); list.add("002212024011002065210590857211693858816"); list.add("002212024011002073010590857367978233856"); list.add("002212024011002074410590857428602703872"); list.add("002212024011002093810590857906074054656"); list.add("002212024011002102710590858112088236032"); list.add("002212024011002341310590864093667635200"); list.add("002212024011002495810590868055018274816"); list.add("002212024011002544910590869277572079616"); list.add("002212024011003043610590871738575323136"); list.add("002212024011003144210590874282598162432"); list.add("002212024011003215210590876086295265280"); list.add("002212024011003323610590878787006607360"); list.add("002212024011004125710590888940006174720"); list.add("002212024011004243810590891880092893184"); list.add("002212024011004290010590892979661991936"); list.add("002212024011004365710590894980259471360"); list.add("002212024011005055510590902267805593600"); list.add("002212024011005204810590906016629465088"); list.add("002212024011005282710590907940739518464"); list.add("002212024011005331310590909138130288640"); list.add("002212024011005354310590909767961026560"); list.add("002212024011005414310590911277350768640"); list.add("002212024011005471910590912689418313728"); list.add("002212024011005485810590913102145163264"); list.add("002212024011005500610590913390058967040"); list.add("002212024011007221310590936571124318208"); list.add("002212024011008052710590947448579674112"); list.add("002212024011008080510590948111388344320"); list.add("002212024011008293610590953529991430144"); list.add("002212024011008503010590958787497385984"); list.add("002212024011008585610590960909426999296"); list.add("002212024011009241910590967299662835712"); list.add("002212024011009260210590967728386170880"); list.add("002212024011009280710590968253904158720"); list.add("002212024011009323810590969392110510080"); list.add("002212024011009351110590970033057198080"); list.add("002212024011009380010590970741695799296"); list.add("002212024011009393710590971147000840192"); list.add("002212024011009414910590971703148773376"); list.add("002212024011009463310590972891306954752"); list.add("002212024011009512610590974122161799168"); list.add("002212024011009563910590975435739533312"); list.add("002212024011009571610590975590153699328"); list.add("002212024011010312410590984179497082880"); list.add("002212024011010363010590985465647575040"); list.add("002212024011010473910590988269916561408"); list.add("002212024011011073610590993288170610688"); list.add("002212024011011243810590997578153832448"); list.add("002212024011011314010590999347798048768"); list.add("002212024011011351810591000261436616704"); list.add("002212024011011362610591000545848729600"); list.add("002212024011011481510591003518665269248"); list.add("002212024011011563510591005618014093312"); list.add("002212024011011572510591005828997689344"); list.add("002212024011012043510591007630623223808"); list.add("002212024011012112010591009329021440000"); list.add("002212024011012142010591010083728990208"); list.add("002212024011012192410591011360788434944"); list.add("002212024011012240110591012520215658496"); list.add("002212024011012304310591014206246383616"); list.add("002212024011012381610591016106011336704"); list.add("002212024011012511510591019373481275392"); list.add("002212024011012594710591021521294045184"); list.add("002212024011013045410591022810034761728"); list.add("002212024011013074810591023540680007680"); list.add("002212024011013111410591024403194163200"); list.add("002212024011013144710591025297868816384"); list.add("002212024011013145710591025339318607872"); list.add("002212024011013223410591027254793027584"); list.add("002212024011013254910591028072215306240"); list.add("002212024011013300410591029141528330240"); list.add("002212024011013332410591029980938498048"); list.add("002212024011013404710591031839015170048"); list.add("002212024011013463310591033291270160384"); list.add("002212024011013474310591033583778525184"); list.add("002212024011013490210591033916038701056"); list.add("002212024011013490410591033923746562048"); list.add("002212024011013505410591034387416707072"); list.add("002212024011013571010591035964354420736"); list.add("002212024011014014010591037094891315200"); list.add("002212024011014062910591038309050195968"); list.add("002212024011014112710591039556721299456"); list.add("002212024011014112810591039559659282432"); list.add("002212024011014163910591040865339891712"); list.add("002212024011014210510591041983456169984"); list.add("002212024011014264810591043421946376192"); list.add("002212024011014301010591044267859329024"); list.add("002212024011014322310591044824813379584"); list.add("002212024011014363910591045901327372288"); list.add("002212024011014392710591046603960446976"); list.add("002212024011014401410591046803092271104"); list.add("002212024011014413110591047125040816128"); list.add("002212024011014415510591047224760307712"); list.add("002212024011014422010591047328195112960"); list.add("002212024011014423810591047404127731712"); list.add("002212024011014480610591048781189828608"); list.add("002212024011014495310591049231065800704"); list.add("002212024011014560110591050772620853248"); list.add("002212024011014592810591051643052871680"); list.add("002212024011015015210591052245803835392"); list.add("002212024011015045910591053030393344000"); list.add("002212024011015110810591054578447765504"); list.add("002212024011015123510591054941525540864"); list.add("002212024011015133510591055194751688704"); list.add("002212024011015142810591055417215500288"); list.add("002212024011015205510591057039232458752"); list.add("002212024011015281510591058886752067584"); list.add("002212024011015314110591059749464023040"); list.add("002212024011015462510591063457337692160"); list.add("002212024011015540410591065382038663168"); list.add("002212024011016021310591067431728005120"); list.add("002212024011016053910591068298489225216"); list.add("002212024011016133610591070299518509056"); list.add("002212024011016174910591071357789401088"); list.add("002212024011016213010591072286573957120"); list.add("002212024011016215110591072373446647808"); list.add("002212024011016285510591074151934058496"); list.add("002212024011016312810591074792142200832"); list.add("002212024011016390510591076710285561856"); list.add("002212024011016395710591076929337401344"); list.add("002212024011016562410591081067742720000"); list.add("002212024011017100110591084495801634816"); list.add("002212024011017164210591086175590236160"); list.add("002212024011017192010591086839169011712"); list.add("002212024011017243610591088164908752896"); list.add("002212024011017290510591089291791126528"); list.add("002212024011017353510591090927319490560"); list.add("002212024011017455110591093513506947072"); list.add("002212024011017525010591095269535621120"); list.add("002212024011017554010591095982905577472"); list.add("002212024011017572910591096438863290368"); list.add("002212024011018414610591107585392091136"); list.add("002212024011018415310591107615062450176"); list.add("002212024011019132410591115544398356480"); list.add("002212024011019134610591115636845039616"); list.add("002212024011019310010591119973742645248"); list.add("002212024011019315610591120209481515008"); list.add("002212024011019490310591124516475985920"); list.add("002212024011019525610591125495938211840"); list.add("002212024011019561610591126331685556224"); list.add("002212024011019582010591126851859595264"); list.add("002212024011020015910591127772661710848"); list.add("002212024011020022710591127890633506816"); list.add("002212024011020092810591129656446545920"); list.add("002212024011020191910591132135336927232"); list.add("002212024011020240710591133342983995392"); list.add("002212024011020283510591134465872465920"); list.add("002212024011020324610591135518634528768"); list.add("002212024011020455310591138819123810304"); list.add("002212024011020474210591139276050092032"); list.add("002212024011021114410591145324551303168"); list.add("002212024011021115610591145377684746240"); list.add("002212024011021170510591146671614676992"); list.add("002212024011021235810591148405463572480"); list.add("002212024011021244110591148585949548544"); list.add("002212024011021413710591152847636561920"); list.add("002212024011021420310591152955874447360"); list.add("002212024011021590610591157245958377472"); list.add("002212024011022094810591159936400187392"); list.add("002212024011022103410591160132567666688"); list.add("002212024011022114010591160406555185152"); list.add("002212024011022191610591162319003963392"); list.add("002212024011022205810591162749630930944"); list.add("002212024011022243910591163677308313600"); list.add("002212024011022265210591164231639449600"); list.add("002212024011022281910591164598813827072"); list.add("002212024011022293410591164912868384768"); list.add("002212024011022294010591164937967190016"); list.add("002212024011022305110591165235684524032"); list.add("002212024011022320310591165535617671168"); list.add("002212024011022333910591165940802420736"); list.add("002212024011022334110591165948135948288"); list.add("002212024011022335810591166021521596416"); list.add("002212024011022351810591166357606862848"); list.add("002212024011022365010591166743034306560"); list.add("002212024011022375610591167018643873792"); list.add("002212024011022382110591167123759489024"); list.add("002212024011022441310591168601513484288"); list.add("002212024011022444810591168744975425536"); list.add("002212024011022501710591170127113961472"); list.add("002212024011022511510591170367885893632"); list.add("002212024011022585910591172317738160128"); list.add("002212024011023015910591173069648818176"); list.add("002212024011023021510591173137668722688"); list.add("002212024011023040310591173589052645376"); list.add("002212024011023055610591174065764802560"); list.add("002212024011023080210591174593050537984"); list.add("002212024011023085910591174833906024448"); list.add("002212024011023123810591175751367557120"); list.add("002212024011023155110591176559139852288"); list.add("002212024011023160610591176623621095424"); list.add("002212024011023173710591177005149642752"); list.add("002212024011023250110591178867780698112"); list.add("002212024011023261910591179194521718784"); list.add("002212024011023310910591180409831809024"); list.add("002212024011023365910591181877957812224"); list.add("002212024011023404110591182809458966528"); list.add("002212024011023413210591183022336147456"); list.add("002212024011023430710591183422751371264"); list.add("002212024011023445510591183874932043776"); list.add("002212024011023532010591185993626914816"); list.add("002212024011023584510591187357990866944"); list.add("002212024011023590810591187451544027136"); list.add("002212024011100030110591188429334200320"); list.add("002212024011100041510591188741724434432"); list.add("002212024011100055810591189173962964992"); list.add("002212024011100073610591189583875727360"); list.add("002212024011100095210591190152429129728"); list.add("002212024011100163710591191853245849600"); list.add("002212024011100284110591194888797933568"); list.add("002212024011100430510591198513804165120"); list.add("002212024011100483210591199885165957120"); list.add("002212024011100512910591200628858322944"); list.add("002212024011100522010591200842231480320"); list.add("002212024011100573310591202153869303808"); list.add("002212024011100581410591202326836015104"); list.add("002212024011101005910591203017994485760"); list.add("002212024011101040410591203793385136128"); list.add("002212024011101130110591206045879234560"); list.add("002212024011101154510591206732336680960"); list.add("002212024011101185610591207533399728128"); list.add("002212024011101270010591209563249807360"); list.add("002212024011101282610591209927653056512"); list.add("002212024011101313110591210702200594432"); list.add("002212024011101385110591212547643904000"); list.add("002212024011101490210591215108115648512"); list.add("002212024011101562410591216964288077824"); list.add("002212024011102073310591219769852784640"); list.add("002212024011102134410591221324284010496"); list.add("002212024011102192210591222745641181184"); list.add("002212024011102345410591226654093692928"); list.add("002212024011102410410591228204171354112"); list.add("002212024011102494110591230374830620672"); list.add("002212024011102542910591231580430766080"); list.add("002212024011103030510591233745149132800"); list.add("002212024011103083810591235143213113344"); list.add("002212024011103121710591236062703243264"); list.add("002212024011103173410591237391492481024"); list.add("002212024011103211610591238320341835776"); list.add("002212024011103402610591243143122468864"); list.add("002212024011103422810591243658607685632"); list.add("002212024011103452710591244408564867072"); list.add("002212024011103492410591245400811368448"); list.add("002212024011103495110591245512994562048"); list.add("002212024011103501110591245598132396032"); list.add("002212024011103520710591246086175621120"); list.add("002212024011104003110591248198140383232"); list.add("002212024011104134510591251527706771456"); list.add("002212024011104225010591253814631415808"); list.add("002212024011104462310591259740585168896"); list.add("002212024011104513310591261042390196224"); list.add("002212024011105402410591273335771586560"); list.add("002212024011105471210591275045441404928"); list.add("002212024011106075310591280249833603072"); list.add("002212024011106135010591281747326828544"); list.add("002212024011106185110591283011137556480"); list.add("002212024011106575610591292848415522816"); list.add("002212024011107434410591304375284129792"); list.add("002212024011107594610591308406855524352"); list.add("002212024011108084110591310651449892864"); list.add("002212024011109211010591328892918390784"); list.add("002212024011109235710591329592362614784"); list.add("002212024011109272110591330448061603840"); list.add("002212024011109494810591336101051994112"); list.add("002212024011109503910591336314176618496"); list.add("002212024011109583210591338297927766016"); list.add("002212024011109595410591338641223278592"); list.add("002212024011110015010591339125236527104"); list.add("002212024011110050010591339922202198016"); list.add("002212024011110282710591345824285540352"); list.add("002212024011110444510591349928730681344"); list.add("002212024011110502510591351354634657792"); list.add("002212024011110502610591351357954752512"); list.add("002212024011110510810591351534027440128"); list.add("002212024011111212310591359145962065920"); list.add("002212024011111225510591359534150410240"); list.add("002212024011111271910591360641244676096"); list.add("002212024011111463510591365488405307392"); list.add("002212024011111522410591366951276597248"); list.add("002212024011111575510591368339096293376"); list.add("002212024011111591910591368691331792896"); list.add("002212024011112002710591368976292044800"); list.add("002212024011112051110591370169535815680"); list.add("002212024011112073810591370786704560128"); list.add("002212024011112101610591371448189091840"); list.add("002212024011112111210591371681936261120"); list.add("002212024011112142710591372500921647104"); list.add("002212024011112161010591372934641516544"); list.add("002212024011112271710591375732955078656"); list.add("002212024011112371310591378231489626112"); list.add("002212024011112413210591379315247390720"); list.add("002212024011112480110591380947494346752"); list.add("002212024011112485310591381167741177856"); list.add("002212024011112502710591381559975858176"); list.add("002212024011112513710591381852725547008"); list.add("002212024011112544210591382629581406208"); list.add("002212024011112594510591383900604985344"); list.add("002212024011113065410591385701486153728"); list.add("002212024011113090110591386235601379328"); list.add("002212024011113175810591388486057279488"); list.add("002212024011113230410591389770195886080"); list.add("002212024011113270110591390763210088448"); list.add("002212024011113324710591392214133145600"); list.add("002212024011113342910591392644474728448"); list.add("002212024011113362910591393144393818112"); list.add("002212024011113363810591393183264833536"); list.add("002212024011113383910591393690618032128"); list.add("002212024011113493510591396440556888064"); list.add("002212024011113504410591396730961477632"); list.add("002212024011113512310591396894480232448"); list.add("002212024011114055610591400555829739520"); list.add("002212024011114070810591400860602585088"); list.add("002212024011114083110591401208882782208"); list.add("002212024011114104410591401762983895040"); list.add("002212024011114122210591402175935627264"); list.add("002212024011114175110591403554346057728"); list.add("002212024011114185810591403835081465856"); list.add("002212024011114253810591405514877784064"); list.add("002212024011114290510591406383670419456"); list.add("002212024011114352510591407977443057664"); list.add("002212024011114382610591408734113005568"); list.add("002212024011114390310591408890356297728"); list.add("002212024011114411310591409438222553088"); list.add("002212024011114425910591409879950721024"); list.add("002212024011114474610591411083316985856"); list.add("002212024011114474710591411087139790848"); list.add("002212024011114501010591411687141572608"); list.add("002212024011114572810591413524276027392"); list.add("002212024011114581110591413704918163456"); list.add("002212024011115053610591415571275272192"); list.add("002212024011115135910591417682274131968"); list.add("002212024011115181110591418739121299456"); list.add("002212024011115283010591421334245425152"); list.add("002212024011115371110591423521908977664"); list.add("002212024011115371810591423548908859392"); list.add("002212024011115460110591425742858080256"); list.add("002212024011115555710591428245318258688"); list.add("002212024011116055410591430749232787456"); list.add("002212024011116163710591433446234423296"); list.add("002212024011116284410591436492541165568"); list.add("002212024011116392210591439170062475264"); list.add("002212024011116413210591439715396177920"); list.add("002212024011116463310591440977668423680"); list.add("002212024011117044210591445545369956352"); list.add("002212024011117390010591454175315087360"); list.add("002212024011117562010591458541040291840"); list.add("002212024011118123310591462621871562752"); list.add("002212024011118350410591468288258826240"); list.add("002212024011118452910591470908698386432"); list.add("002212024011119253610591481003247263744"); list.add("002212024011119272510591481461441511424"); list.add("002212024011119420010591485129941307392"); list.add("002212024011119434710591485577971974144"); list.add("002212024011119475110591486604482433024"); list.add("002212024011120005610591489894283431936"); list.add("002212024011120013910591490074742484992"); list.add("002212024011120033810591490574764580864"); list.add("002212024011120054010591491088936501248"); list.add("002212024011120124610591492875443720192"); list.add("002212024011120152910591493556440621056"); list.add("002212024011120174010591494108293586944"); list.add("002212024011120244110591495872822591488"); list.add("002212024011120272210591496549449846784"); list.add("002212024011120362710591498835859292160"); list.add("002212024011121003410591504903851073536"); list.add("002212024011121061210591506321737736192"); list.add("002212024011121174210591509215369183232"); list.add("002212024011121213610591510196497371136"); list.add("002212024011121252010591511135770079232"); list.add("002212024011121291610591512126682517504"); list.add("002212024011121432710591515693535416320"); list.add("002212024011121501810591517419108954112"); list.add("002212024011122044910591521070236000256"); list.add("002212024011122072010591521705055449088"); list.add("002212024011122084910591522077244256256"); list.add("002212024011122182110591524475913715712"); list.add("002212024011122184810591524590735450112"); list.add("002212024011122213110591525275816292352"); list.add("002212024011122292010591527239797866496"); list.add("002212024011122300510591527430105440256"); list.add("002212024011122302410591527511990689792"); list.add("002212024011122305810591527654435450880"); list.add("002212024011122312810591527776921710592"); list.add("002212024011122341010591528459970469888"); list.add("002212024011122341610591528482820026368"); list.add("002212024011122342910591528537892163584"); list.add("002212024011122343210591528552509636608"); list.add("002212024011122404510591530116603871232"); list.add("002212024011122410610591530203261861888"); list.add("002212024011122435610591530915884384256"); list.add("002212024011122462510591531539482906624"); list.add("002212024011122472510591531794549919744"); list.add("002212024011122495110591532405304778752"); list.add("002212024011122505810591532687268900864"); list.add("002212024011122535110591533412694745088"); list.add("002212024011122552910591533821608173568"); list.add("002212024011123034910591535917923168256"); list.add("002212024011123044610591536160159203328"); list.add("002212024011123062910591536589200551936"); list.add("002212024011123063910591536631497060352"); list.add("002212024011123073110591536852548403200"); list.add("002212024011123074510591536908013793280"); list.add("002212024011123130010591538231671218176"); list.add("002212024011123221510591540559812132864"); list.add("002212024011123292010591542339642544128"); list.add("002212024011123312610591542868459511808"); list.add("002212024011123341610591543581992714240"); list.add("002212024011123364110591544191458582528"); list.add("002212024011123471510591546851130245120"); list.add("002212024011123513810591547954982395904"); list.add("002212024011123522110591548132925595648"); list.add("002212024011123543510591548696233410560"); list.add("002212024011200011610591550379440836608"); list.add("002212024011200133910591553492808855552"); list.add("002212024011200154210591554009242173440"); list.add("002212024011200154410591554020086333440"); list.add("002212024011200154510591554022516969472"); list.add("002212024011200184610591554780918374400"); list.add("002212024011200270710591556884193046528"); list.add("002212024011200315810591558105493532672"); list.add("002212024011200390210591559879950524416"); list.add("002212024011200394610591560065468784640"); list.add("002212024011200405310591560348829696000"); list.add("002212024011200413810591560536819462144"); list.add("002212024011200470810591561919888056320"); list.add("002212024011200510010591562894997356544"); list.add("002212024011200533810591563556979580928"); list.add("002212024011200540510591563670912462848"); list.add("002212024011200561110591564196023590912"); list.add("002212024011201055410591566644242366464"); list.add("002212024011201062010591566751480889344"); list.add("002212024011201155510591569164622004224"); list.add("002212024011201170810591569470515941376"); list.add("002212024011201203310591570331752427520"); list.add("002212024011201300010591572706366406656"); list.add("002212024011201343110591573843191373824"); list.add("002212024011201382610591574831931432960"); list.add("002212024011201384510591574908514418688"); list.add("002212024011201441410591576290611552256"); list.add("002212024011201461510591576796476375040"); list.add("002212024011201513210591578128528429056"); list.add("002212024011201513910591578155917205504"); list.add("002212024011201533110591578624635019264"); list.add("002212024011201594910591580211635679232"); list.add("002212024011202001810591580333086031872"); list.add("002212024011202041710591581334534832128"); list.add("002212024011202114410591583210842083328"); list.add("002212024011202143510591583926491127808"); list.add("002212024011202233510591586191772385280"); list.add("002212024011202273710591587208864165888"); list.add("002212024011202332710591588677172936704"); list.add("002212024011202340110591588816563634176"); list.add("002212024011202424710591591024414126080"); list.add("002212024011203001210591595407102345216"); list.add("002212024011203034010591596279221579776"); list.add("002212024011203141810591598954325843968"); list.add("002212024011203155710591599371305578496"); list.add("002212024011203182510591599992839589888"); list.add("002212024011203260810591601932440801280"); list.add("002212024011203344110591604084244037632"); list.add("002212024011203381910591604999865339904"); list.add("002212024011203442910591606551766474752"); list.add("002212024011203472710591607299161968640"); list.add("002212024011203484110591607607208370176"); list.add("002212024011203551610591609264880566272"); list.add("002212024011203552810591609314296324096"); list.add("002212024011203572310591609796665180160"); list.add("002212024011204040410591611481674706944"); list.add("002212024011205105510591628305023856640"); list.add("002212024011205220910591631129880403968"); list.add("002212024011205254010591632015799832576"); list.add("002212024011205283410591632746453127168"); list.add("002212024011205284610591632795606175744"); list.add("002212024011205360510591634636348489728"); list.add("002212024011205390010591635369907093504"); list.add("002212024011206021610591641227771330560"); list.add("002212024011206050910591641953189335040"); list.add("002212024011206152010591644513072533504"); list.add("002212024011206261010591647240151556096"); list.add("002212024011206315510591648687555534848"); list.add("002212024011206495010591653195993964544"); list.add("002212024011207134510591659217236127744"); list.add("002212024011207323110591663938087002112"); list.add("002212024011207344410591664494201233408"); list.add("002212024011208045310591672084932976640"); list.add("002212024011208303410591678548679282688"); list.add("002212024011208363210591680047211827200"); list.add("002212024011208441410591681985912930304"); list.add("002212024011208452410591682280034099200"); list.add("002212024011209055110591687424952139776"); list.add("002212024011209123610591689124689584128"); list.add("002212024011209210510591691258052952064"); list.add("002212024011209385210591695734621028352"); list.add("002212024011209385510591695749466980352"); list.add("002212024011209442410591697128795009024"); list.add("002212024011209451610591697346377449472"); list.add("002212024011209541110591699591514157056"); list.add("002212024011210083610591703216447741952"); list.add("002212024011210145810591704819165515776"); list.add("002212024011210153110591704959904509952"); list.add("002212024011210220710591706621469736960"); list.add("002212024011210363510591710259413880832"); list.add("002212024011210504910591713842083618816"); list.add("002212024011210585610591715885930938368"); list.add("002212024011210593710591716058259386368"); list.add("002212024011211050210591717418452729856"); list.add("002212024011211231710591722011714080768"); list.add("002212024011211245410591722420033769472"); list.add("002212024011211342210591724800736620544"); list.add("002212024011211545610591729976076890112"); list.add("002212024011211562410591730348922081281"); list.add("002212024011211563210591730381052571648"); list.add("002212024011211595210591731218842025984"); list.add("002212024011212003910591731418364891136"); list.add("002212024011212004210591731429085650944"); list.add("002212024011212005210591731470135156736"); list.add("002212024011212065310591732985703919616"); list.add("002212024011212111010591734063641821184"); list.add("002212024011212184310591735964994473984"); list.add("002212024011212241210591737343044710400"); list.add("002212024011212343910591739970990075904"); list.add("002212024011212345410591740034722525184"); list.add("002212024011212360610591740336485650432"); list.add("002212024011212375010591740773910958080"); list.add("002212024011212474110591743250999762944"); list.add("002212024011212514610591744278260514816"); list.add("002212024011212570710591745627182030848"); list.add("002212024011213011110591746649434726400"); list.add("002212024011213035810591747349243707392"); list.add("002212024011213054210591747788053233664"); list.add("002212024011213100310591748880953987072"); list.add("002212024011213105710591749107575545856"); list.add("002212024011213173310591750770558451712"); list.add("002212024011213195110591751346022596608"); list.add("002212024011213242110591752481744519168"); list.add("002212024011213292510591753753665687552"); list.add("002212024011213300010591753903929942016"); list.add("002212024011213335510591754887357894656"); list.add("002212024011213375810591755906690011136"); list.add("002212024011213385410591756142373429248"); list.add("002212024011213463410591758069987528704"); list.add("002212024011213481010591758473978548224"); list.add("002212024011214011510591761767035936768"); list.add("002212024011214043810591762616880427008"); list.add("002212024011214062210591763054731149312"); list.add("002212024011214091410591763774009208832"); list.add("002212024011214131010591764763649896448"); list.add("002212024011214162810591765594292199424"); list.add("002212024011214170910591765769286770688"); list.add("002212024011214190810591766266185879552"); list.add("002212024011214263810591768152675090432"); list.add("002212024011214290110591768753389387776"); list.add("002212024011214294410591768933415215104"); list.add("002212024011214330010591769758580297728"); list.add("002212024011214332910591769877107134464"); list.add("002212024011214371610591770832254132224"); list.add("002212024011214465410591773253946793984"); list.add("002212024011214482310591773626676768768"); list.add("002212024011214524110591774711276494848"); list.add("002212024011214540610591775065898909696"); list.add("002212024011215010910591776841116930048"); list.add("002212024011215141410591780132485722112"); list.add("002212024011215330310591784867458818048"); list.add("002212024011216090110591793919200718848"); list.add("002212024011216402610591801825136603136"); list.add("002212024011216485310591803950680723456"); list.add("002212024011216545310591805462764183552"); list.add("002212024011217083410591808906159939584"); list.add("002212024011217322110591814891263311872"); list.add("002212024011217430210591817578139516928"); list.add("002212024011217453110591818203257335808"); list.add("002212024011217551310591820644115771392"); list.add("002212024011217570510591821117598167040"); list.add("002212024011218012810591822219728232448"); list.add("002212024011218484010591834096820416512"); list.add("002212024011218543410591835581103636480"); list.add("002212024011219155710591840963485425664"); list.add("002212024011219193210591841863160201216"); list.add("002212024011219402210591847106379239424"); list.add("002212024011219441210591848074091118592"); list.add("002212024011219474610591848968088354817"); list.add("002212024011219522310591850133410406400"); list.add("002212024011220101710591854636790005760"); list.add("002212024011220112510591854923546181632"); list.add("002212024011220240610591858113719689216"); list.add("002212024011220402710591862229306142720"); list.add("002212024011220513510591865030789689344"); list.add("002212024011221002310591867243176083456"); list.add("002212024011221031010591867943911124992"); list.add("002212024011221125310591870388438515712"); list.add("002212024011221132710591870533257322496"); list.add("002212024011221270410591873958973927424"); list.add("002212024011221322410591875301730017280"); list.add("002212024011221330610591875477611298816"); list.add("002212024011221424310591877897056280576"); list.add("002212024011221431010591878012398370816"); list.add("002212024011221440510591878241206042624"); list.add("002212024011221465510591878955927298048"); list.add("002212024011221483210591879361986256896"); list.add("002212024011221510810591880015926386688"); list.add("002212024011221543710591880891479838720"); list.add("002212024011221551910591881069466443776"); list.add("002212024011221555310591881211070308352"); list.add("002212024011221575710591881733896617984"); list.add("002212024011221591310591882051688759296"); list.add("002212024011222100310591884776114831360"); list.add("002212024011222185710591887017633333248"); list.add("002212024011222204610591887472070455296"); list.add("002212024011222244110591888459851210752"); list.add("002212024011222250310591888550146068480"); list.add("002212024011222255410591888767318712320"); list.add("002212024011222260610591888815400108032"); list.add("002212024011222260910591888827333963776"); list.add("002212024011222264410591888976553566208"); list.add("002212024011222320310591890313468145664"); list.add("002212024011222320610591890324500238336"); list.add("002212024011222381210591891862752149504"); list.add("002212024011222390110591892065309065216"); list.add("002212024011222393010591892187752800256"); list.add("002212024011222445510591893549343170560"); list.add("002212024011222450010591893573244538880"); list.add("002212024011222452010591893657638305792"); list.add("002212024011222504510591895018087858176"); list.add("002212024011222513210591895216604266496"); list.add("002212024011222591510591897159819231232"); list.add("002212024011223025410591898077887152128"); list.add("002212024011223070510591899128394637312"); list.add("002212024011223095310591899835520765952"); list.add("002212024011223165510591901603175940096"); list.add("002212024011223200810591902411879313408"); list.add("002212024011223231310591903191308599296"); list.add("002212024011223302610591905006934138880"); list.add("002212024011223305510591905126742089728"); list.add("002212024011223341410591905962379632640"); list.add("002212024011223352710591906267431424000"); list.add("002212024011223353210591906289942253568"); list.add("002212024011223395510591907393702711296"); list.add("002212024011223411710591907737336500224"); list.add("002212024011223422410591908016166903808"); list.add("002212024011223423210591908049956798464"); list.add("002212024011223441510591908482446868480"); list.add("002212024011223455710591908912493596672"); list.add("002212024011223462210591909016197763072"); list.add("002212024011223483910591909589999607808"); list.add("002212024011223524410591910619198103552"); list.add("002212024011223530910591910722914705408"); list.add("002212024011300010710591912729058725888"); list.add("002212024011300035110591913415876706304"); list.add("002212024011300053310591913842620198912"); list.add("002212024011300120910591915504366706688"); list.add("002212024011300143710591916123987103744"); list.add("002212024011300211110591917777678843904"); list.add("002212024011300224310591918164245430272"); list.add("002212024011300224410591918166187302912"); list.add("002212024011300254310591918917198495744"); list.add("002212024011300303310591920134276464640"); list.add("002212024011300312110591920336000155648"); list.add("002212024011300312210591920338857750528"); list.add("002212024011300344710591921201488818176"); list.add("002212024011300374010591921927217729536"); list.add("002212024011300401810591922587963187200"); list.add("002212024011300421710591923088209317888"); list.add("002212024011300583610591927195924910080"); list.add("002212024011301014210591927975712256000"); list.add("002212024011301110110591930318279397376"); list.add("002212024011301112410591930413036040192"); list.add("002212024011301112810591930433880584192"); list.add("002212024011301134310591930998958190592"); list.add("002212024011301150810591931354897555456"); list.add("002212024011301155910591931569692114944"); list.add("002212024011301165510591931802381316096"); list.add("002212024011301242310591933684569067520"); list.add("002212024011301290810591934876192505856"); list.add("002212024011301465410591939349060681728"); list.add("002212024011301470710591939405213155328"); list.add("002212024011301472410591939472964378624"); list.add("002212024011301492010591939961995120640"); list.add("002212024011301531810591940960533045248"); list.add("002212024011302021810591943225570598912"); list.add("002212024011302065710591944394518781952"); list.add("002212024011302074810591944607432921088"); list.add("002212024011302111010591945456642265088"); list.add("002212024011302214610591948124228145152"); list.add("002212024011302273210591949573346250752"); list.add("002212024011302325310591950919888924672"); list.add("002212024011302332710591951061922832384"); list.add("002212024011302365110591951920821911552"); list.add("002212024011302483110591954856761286656"); list.add("002212024011302490110591954981560729600"); list.add("002212024011303010010591957998420811776"); list.add("002212024011303051810591959078009495552"); list.add("002212024011303082310591959854761279488"); list.add("002212024011303153710591961675654578176"); list.add("002212024011303184510591962464320610304"); list.add("002212024011303185110591962489572663296"); list.add("002212024011303425810591968557799415808"); list.add("002212024011303442410591968920882724864"); list.add("002212024011303470110591969576413163520"); list.add("002212024011303573410591972233204916224"); list.add("002212024011303590510591972614794338304"); list.add("002212024011304032110591973688244649984"); list.add("002212024011304041810591973927577964544"); list.add("002212024011304154510591976806534303744"); list.add("002212024011304213710591978283857567744"); list.add("002212024011304325610591981134658916352"); list.add("002212024011305234610591993924425572352"); list.add("002212024011305384710591997706441027584"); list.add("002212024011305401810591998085737144320"); list.add("002212024011305511510592000840152076288"); list.add("002212024011305554210592001962951794688"); list.add("002212024011306053610592004451784884224"); list.add("002212024011306145010592006777085812736"); list.add("002212024011306253310592009475248021504"); list.add("002212024011306255110592009550112391168"); list.add("002212024011306531110592016429189513216"); list.add("002212024011307052510592019505761828864"); list.add("002212024011307224610592023870837460992"); list.add("002212024011307251910592024512287076352"); list.add("002212024011308204410592038460325732352"); list.add("002212024011308345710592042037692289024"); list.add("002212024011308571310592047643727712256"); list.add("002212024011309015410592048819818151936"); list.add("002212024011309272010592055221922725888"); list.add("002212024011310270310592070250963357696"); list.add("002212024011311050710592079828559196160"); list.add("002212024011311132510592081916953485312"); list.add("002212024011311292210592085931655536640"); list.add("002212024011311310510592086364434063360"); list.add("002212024011311391310592088409191968768"); list.add("002212024011312011010592093933926047744"); list.add("002212024011312012010592093976443912192"); list.add("002212024011312161210592097717620998144"); list.add("002212024011312164810592097870414716928"); list.add("002212024011312241010592099721307127808"); list.add("002212024011312284210592100863935471616"); list.add("002212024011312465810592105458166325248"); list.add("002212024011312491810592106047518404608"); list.add("002212024011312512810592106593656061952"); list.add("002212024011312594710592108684106432512"); list.add("002212024011313002810592108858526240768"); list.add("002212024011313090110592111007708848128"); list.add("002212024011313105110592111472536051712"); list.add("002212024011313143410592112408071454720"); list.add("002212024011313202310592113868154724352"); list.add("002212024011313243310592114916441407488"); list.add("002212024011313333910592117206983016448"); list.add("002212024011313351810592117622787493888"); list.add("002212024011313401210592118856040042496"); list.add("002212024011313461110592120363267350528"); list.add("002212024011313503710592121479601016832"); list.add("002212024011313523710592121982896795648"); list.add("002212024011313564910592123037725351936"); list.add("002212024011313564910592123038623023104"); list.add("002212024011314023710592124496726585344"); list.add("002212024011314134110592127282391240704"); list.add("002212024011314192410592128723351977984"); list.add("002212024011314223510592129523193081856"); list.add("002212024011314372610592133260643246080"); list.add("002212024011314411810592134232618672128"); list.add("002212024011314423810592134569731395584"); list.add("002212024011314442010592134994680954880"); list.add("002212024011314540410592137447693041664"); list.add("002212024011314553410592137821549576192"); list.add("002212024011314561510592137996901388288"); list.add("002212024011314563010592138058746724352"); list.add("002212024011314582310592138533141168128"); list.add("002212024011314582910592138556216287232"); list.add("002212024011314595010592138895573082112"); list.add("002212024011315022710592139557717360640"); list.add("002212024011315044210592140121635979264"); list.add("002212024011315082810592141069292249088"); list.add("002212024011315113410592141849768337408"); list.add("002212024011315140210592142471137755136"); list.add("002212024011315160610592142992340541440"); list.add("002212024011315162810592143081811464192"); list.add("002212024011315250610592145256105222144"); list.add("002212024011315304010592146656562208768"); list.add("002212024011315415610592149490837852160"); list.add("002212024011315430810592149795520602112"); list.add("002212024011316233310592159964258295808"); list.add("002212024011316533410592167519443345408"); list.add("002212024011317181010592173710850760704"); list.add("002212024011318075510592186229583372288"); list.add("002212024011318271310592191085748633600"); list.add("002212024011318383410592193945164963840"); list.add("002212024011318405310592194527869231104"); list.add("002212024011318543010592197951914672128"); list.add("002212024011319004410592199521999646720"); list.add("002212024011319013210592199724739715072"); list.add("002212024011319105210592202069770891264"); list.add("002212024011319111110592202150762897408"); list.add("002212024011319135010592202817882456064"); list.add("002212024011319163310592203502043979776"); list.add("002212024011319302910592207009824301056"); list.add("002212024011319415810592209897031548928"); list.add("002212024011319501310592211973657169920"); list.add("002212024011319541710592212998764843008"); list.add("002212024011319555510592213409640206336"); list.add("002212024011320015910592214935497949184"); list.add("002212024011320075710592216437533429760"); list.add("002212024011320103010592217078490308608"); list.add("002212024011320194410592219404161155072"); list.add("002212024011320452910592225881887469568"); list.add("002212024011320542810592228141570969600"); list.add("002212024011321001910592229615838121984"); list.add("002212024011321040910592230580338507776"); list.add("002212024011321062110592231133298683904"); list.add("002212024011321074910592231504094330880"); list.add("002212024011321092310592231899336179712"); list.add("002212024011321101010592232092701806592"); list.add("002212024011321174910592234018575908864"); list.add("002212024011321202110592234658059767808"); list.add("002212024011321335510592238070081908736"); list.add("002212024011321470810592241396624498688"); list.add("002212024011321560810592243662924242944"); list.add("002212024011322120110592247660783702016"); list.add("002212024011322122010592247737769607168"); list.add("002212024011322244410592250861930115072"); list.add("002212024011322261510592251240344797184"); list.add("002212024011322261810592251256249217024"); list.add("002212024011322264510592251365940428800"); list.add("002212024011322271110592251478095388672"); list.add("002212024011322272310592251528234827776"); list.add("002212024011322285410592251910450528256"); list.add("002212024011322302310592252283431321600"); list.add("002212024011322311110592252484269064192"); list.add("002212024011322344510592253380142952448"); list.add("002212024011322351110592253489275695104"); list.add("002212024011322373910592254110021115904"); list.add("002212024011322433110592255586512592896"); list.add("002212024011322504810592257418408656896"); list.add("002212024011322511110592257514281820160"); list.add("002212024011322514010592257639570055168"); list.add("002212024011322551810592258551583531008"); list.add("002212024011322552810592258595108003840"); list.add("002212024011322573410592259124179361792"); list.add("002212024011322584310592259411162910720"); list.add("002212024011322592110592259573458624512"); list.add("002212024011323025910592260486539636736"); list.add("002212024011323055310592261214612090880"); list.add("002212024011323070510592261515784966144"); list.add("002212024011323203410592264911006064640"); list.add("002212024011323234910592265727291150336"); list.add("002212024011323311110592267584166027264"); list.add("002212024011323375210592269265234685952"); list.add("002212024011323383310592269435874476032"); list.add("002212024011323435510592270787630153728"); list.add("002212024011323492910592272188159135744"); list.add("002212024011323500410592272335189917696"); list.add("002212024011323515310592272790854909952"); list.add("002212024011323535810592273315013550080"); list.add("002212024011323560810592273861388722176"); list.add("002212024011323591010592274623997075456"); list.add("002212024011400011310592275139762282496"); list.add("002212024011400015910592275331680006144"); list.add("002212024011400015910592275335296421888"); list.add("002212024011400041810592275915355537408"); list.add("002212024011400072410592276697460408320"); list.add("002212024011400203310592280008258707456"); list.add("002212024011400243910592281036566515712"); list.add("002212024011400345110592283603226173440"); list.add("002212024011400391910592284728406130688"); list.add("002212024011400393010592284775587856384"); list.add("002212024011400451610592286226616377344"); list.add("002212024011400501610592287482818961408"); list.add("002212024011400501910592287495221252096"); list.add("002212024011400533510592288319259500544"); list.add("002212024011401032810592290806140989440"); list.add("002212024011401073210592291830114394112"); list.add("002212024011401083410592292089865297920"); list.add("002212024011401114510592292892976193536"); list.add("002212024011401120710592292985294675968"); list.add("002212024011401122610592293062333652992"); list.add("002212024011401175310592294434728701952"); list.add("002212024011401210510592295241647874048"); list.add("002212024011401224010592295637937254400"); list.add("002212024011401265310592296698319949824"); list.add("002212024011401300510592297506505072640"); list.add("002212024011401323010592298113764528128"); list.add("002212024011401334510592298428014514176"); list.add("002212024011401351910592298821015912448"); list.add("002212024011401414010592300418521993216"); list.add("002212024011401524810592303222350106624"); list.add("002212024011402054310592306474084155392"); list.add("002212024011402140710592308585200979968"); list.add("002212024011402240110592311078213513216"); list.add("002212024011402292610592312440268476416"); list.add("002212024011402294010592312501391278080"); list.add("002212024011402322010592313168907161600"); list.add("002212024011402360610592314116842356736"); list.add("002212024011402361910592314172144197632"); list.add("002212024011402440810592316140815466496"); list.add("002212024011402484010592317280398032896"); list.add("002212024011403001010592320175967293440"); list.add("002212024011403040910592321177063890944"); list.add("002212024011403260510592326697547976704"); list.add("002212024011403313310592328073346768896"); list.add("002212024011403352010592329025602580480"); list.add("002212024011403451810592331535088218112"); list.add("002212024011403462310592331803793637376"); list.add("002212024011403510710592332998720835584"); list.add("002212024011403511110592333012781662208"); list.add("002212024011404005710592335470067666945"); list.add("002212024011404222510592340874345136128"); list.add("002212024011404285810592342524005310464"); list.add("002212024011404391210592345096990679040"); list.add("002212024011404402110592345386049708032"); list.add("002212024011404444510592346495429070848"); list.add("002212024011404511310592348121720766464"); list.add("002212024011404575410592349803172495360"); list.add("002212024011405083910592352510560399360"); list.add("002212024011405174010592354779430248448"); list.add("002212024011405181110592354907467796480"); list.add("002212024011405193610592355264162918400"); list.add("002212024011405221810592355943032373248"); list.add("002212024011405290610592357654418087936"); list.add("002212024011405370910592359680728207360"); list.add("002212024011405493310592362803713495040"); list.add("002212024011405554410592364358736445440"); list.add("002212024011406220510592370990092337152"); list.add("002212024011406243310592371608476413952"); list.add("002212024011406375410592374970915442688"); list.add("002212024011406422610592376111159300096"); list.add("002212024011407223110592386195511824384"); list.add("002212024011407313210592388465638891520"); list.add("002212024011408205210592400881110085632"); list.add("002212024011408333110592404064081469440"); list.add("002212024011409051110592412034046316544"); list.add("002212024011409130010592414000607784960"); list.add("002212024011409312910592418652590919680"); list.add("002212024011409363010592419913528995840"); list.add("002212024011409475210592422774780100608"); list.add("002212024011409482110592422896007368704"); list.add("002212024011409530910592424105386655744"); list.add("002212024011410094410592428279820177408"); list.add("002212024011410442310592436998857416704"); list.add("002212024011410511110592438712195194880"); list.add("002212024011410525910592439162192490496"); list.add("002212024011411030810592441717618720769"); list.add("002212024011411034110592441854956630016"); list.add("002212024011411051310592442242841399296"); list.add("002212024011411081110592442987162857472"); list.add("002212024011411110810592443731671638016"); list.add("002212024011411111710592443769409867776"); list.add("002212024011411114410592443882202546176"); list.add("002212024011411151610592444771628433408"); list.add("002212024011411363810592450148833853440"); list.add("002212024011411383910592450655511240704"); list.add("002212024011411485310592453229299843072"); list.add("002212024011411505910592453758084136960"); list.add("002212024011412115710592459035713945600"); list.add("002212024011412135610592459534209286144"); list.add("002212024011412472010592467940654411776"); list.add("002212024011412565810592470366412292096"); list.add("002212024011413024110592471802055352320"); list.add("002212024011413050110592472389780082688"); list.add("002212024011413063910592472799474577408"); list.add("002212024011413093110592473523813830656"); list.add("002212024011413285210592478390898237440"); list.add("002212024011413355110592480150621863936"); list.add("002212024011413364510592480377924325376"); list.add("002212024011413365410592480412720594944"); list.add("002212024011413384210592480865420038144"); list.add("002212024011413540210592484727940665344"); list.add("002212024011413541010592484759611854848"); list.add("002212024011413550810592485002467532800"); list.add("002212024011413550810592485002651451392"); list.add("002212024011413560210592485228205154304"); list.add("002212024011414004810592486428683923456"); list.add("002212024011414010610592486503121383424"); list.add("002212024011414113910592489159270322176"); list.add("002212024011414132210592489591220719616"); list.add("002212024011414150710592490030892138496"); list.add("002212024011414180810592490789850005504"); list.add("002212024011414273510592493170390065152"); list.add("002212024011414280210592493281029816320"); list.add("002212024011414305110592493992663543808"); list.add("002212024011414323210592494416134070272"); list.add("002212024011414521010592499356713803776"); list.add("002212024011414554710592500267635929088"); list.add("002212024011415001710592501400015314944"); list.add("002212024011415013610592501731751264256"); list.add("002212024011415082010592503422150995968"); list.add("002212024011415084910592503544927707136"); list.add("002212024011415120010592504345301778432"); list.add("002212024011415191710592506179307102208"); list.add("002212024011415275610592508355667902464"); list.add("002212024011415340210592509891551387648"); list.add("002212024011415350510592510156279107584"); list.add("002212024011415351910592510216639307776"); list.add("002212024011415411610592511713871765504"); list.add("002212024011415414410592511828510334976"); list.add("002212024011415421410592511953305550848"); list.add("002212024011415525010592514621963083776"); list.add("002212024011415531010592514706144616448"); list.add("002212024011415543010592515042785992704"); list.add("002212024011415560810592515455392317440"); list.add("002212024011415570910592515711315988480"); list.add("002212024011416220610592521986472861696"); list.add("002212024011416323610592524631367442432"); list.add("002212024011416341610592525050005118976"); list.add("002212024011416385610592526223345033216"); list.add("002212024011416432610592527357476265984"); list.add("002212024011417044210592532708321906688"); list.add("002212024011417311710592539396863115264"); list.add("002212024011417353710592540487245848576"); list.add("002212024011417365310592540808311431168"); list.add("002212024011417405710592541830537768960"); list.add("002212024011418264710592553366183641088"); list.add("002212024011418353810592555594649661440"); list.add("002212024011419005610592561957900574720"); list.add("002212024011419025610592562463029231616"); list.add("002212024011419030310592562494419226624"); list.add("002212024011419041510592562793735999488"); list.add("002212024011419112710592564607729745920"); list.add("002212024011419113510592564639472238592"); list.add("002212024011419302610592569385325006848"); list.add("002212024011419323310592569914822598656"); list.add("002212024011419490910592574094744911872"); list.add("002212024011419585810592576563360669696"); list.add("002212024011420082310592578933767438336"); list.add("002212024011420134110592580269257478144"); list.add("002212024011420151610592580666962845696"); list.add("002212024011420265010592583576630411264"); list.add("002212024011420465610592588635218280448"); list.add("002212024011421065110592593646068621312"); list.add("002212024011421075210592593902084112384"); list.add("002212024011421082110592594025077501952"); list.add("002212024011421161110592595994828591104"); list.add("002212024011421165010592596159407542272"); list.add("002212024011421203210592597090303078400"); list.add("002212024011421251010592598255944323072"); list.add("002212024011421273610592598871215136768"); list.add("002212024011421290210592599228497870848"); list.add("002212024011421305110592599686076858368"); list.add("002212024011421322910592600097085095936"); list.add("002212024011421345010592600689334677504"); list.add("002212024011421400610592602015758147584"); list.add("002212024011422050810592608314385137664"); list.add("002212024011422081310592609093161684992"); list.add("002212024011422082310592609132867174400"); list.add("002212024011422103210592609674775445504"); list.add("002212024011422103910592609705702121472"); list.add("002212024011422171710592611373498986496"); list.add("002212024011422192910592611927372546048"); list.add("002212024011422194610592611996943466496"); list.add("002212024011422202210592612148761935872"); list.add("002212024011422210610592612333676908544"); list.add("002212024011422220210592612570181246976"); list.add("002212024011422231010592612853980258304"); list.add("002212024011422252710592613428086042624"); list.add("002212024011422284710592614267765608448"); list.add("002212024011422302310592614670409613312"); list.add("002212024011422305110592614786740887552"); list.add("002212024011422310310592614836280393728"); list.add("002212024011422315110592615039713800192"); list.add("002212024011422325010592615286439624704"); list.add("002212024011422360710592616111160066048"); list.add("002212024011422365610592616316520878080"); list.add("002212024011422395210592617056111009792"); list.add("002212024011422400710592617119929200640"); list.add("002212024011422430610592617868271452160"); list.add("002212024011422464910592618806035210240"); list.add("002212024011422541210592620664200843264"); list.add("002212024011422554910592621068628217856"); list.add("002212024011423004010592622289436966912"); list.add("002212024011423022110592622712675033088"); list.add("002212024011423070710592623914200522752"); list.add("002212024011423083910592624299588669440"); list.add("002212024011423102410592624741646548992"); list.add("002212024011423143110592625775152324608"); list.add("002212024011423220610592627684879998976"); list.add("002212024011423270310592628930055491584"); list.add("002212024011423281510592629230524821504"); list.add("002212024011423283410592629310382571520"); list.add("002212024011423321310592630229945769984"); list.add("002212024011423362910592631302396477440"); list.add("002212024011423363710592631337319612416"); list.add("002212024011423373610592631583852322816"); list.add("002212024011423423010592632820245942272"); list.add("002212024011423425710592632932000321536"); list.add("002212024011423450910592633484713058304"); list.add("002212024011500004010592637392216776704"); list.add("002212024011500012510592637578223738880"); list.add("002212024011500021610592637792726675456"); list.add("002212024011500045310592638452609662976"); list.add("002212024011500063910592638896462053376"); list.add("002212024011500085210592639453262176256"); list.add("002212024011500093710592639642220003328"); list.add("002212024011500205910592642501523177472"); list.add("002212024011500215610592642740955545600"); list.add("002212024011500252010592643599600877568"); list.add("002212024011500252610592643622929596416"); list.add("002212024011500385210592647004525551616"); list.add("002212024011500400410592647305506836480"); list.add("002212024011500450410592648563107950592"); list.add("002212024011500455610592648780735799296"); list.add("002212024011500481310592649356706041856"); list.add("002212024011500505810592650048042561536"); list.add("002212024011500534210592650738154590208"); list.add("002212024011500534810592650759977730048"); list.add("002212024011500544910592651015946465280"); list.add("002212024011501191210592657155369107456"); list.add("002212024011501313510592660270656999424"); list.add("002212024011501324210592660549290852352"); list.add("002212024011501340810592660913838784512"); list.add("002212024011501350210592661136405331968"); list.add("002212024011501372310592661728032301056"); list.add("002212024011501400310592662402170081280"); list.add("002212024011501444010592663562549387264"); list.add("002212024011501470810592664182039732224"); list.add("002212024011501525210592665625206419456"); list.add("002212024011501544510592666099132264448"); list.add("002212024011501573610592666815655796736"); list.add("002212024011502020010592667925095342080"); list.add("002212024011502024010592668090706120704"); list.add("002212024011502032010592668259923165184"); list.add("002212024011502082210592669526346420224"); list.add("002212024011502112910592670312055656448"); list.add("002212024011502131710592670762214842368"); list.add("002212024011502180110592671957241163776"); list.add("002212024011502343610592676127648092160"); list.add("002212024011502370710592676761553682432"); list.add("002212024011502403810592677648839114752"); list.add("002212024011503151410592686356502863872"); list.add("002212024011503191210592687352140480512"); list.add("002212024011503204210592687732354928640"); list.add("002212024011503211710592687876361285632"); list.add("002212024011503354310592691508890787840"); list.add("002212024011503391510592692399269560320"); list.add("002212024011503533810592696019198574592"); list.add("002212024011503594510592697555991560192"); list.add("002212024011504093910592700050601271296"); list.add("002212024011504185610592702386939875328"); list.add("002212024011504300010592705169600532480"); list.add("002212024011504313310592705561271955456"); list.add("002212024011504313510592705566959161344"); list.add("002212024011504330010592705926808682496"); list.add("002212024011504410310592707949283086336"); list.add("002212024011504501510592710266300768256"); list.add("002212024011504504610592710394239475712"); list.add("002212024011504552810592711580928397312"); list.add("002212024011505043410592713867097358336"); list.add("002212024011505300510592720292604006400"); list.add("002212024011505343410592721417167138816"); list.add("002212024011505474910592724754613592064"); list.add("002212024011505515910592725801058918400"); list.add("002212024011506020310592728333432209408"); list.add("002212024011506072910592729703768518656"); list.add("002212024011506192910592732723141312512"); list.add("002212024011506571710592742236931878912"); list.add("002212024011507232010592748791080058880"); list.add("002212024011507373910592752394460422144"); list.add("002212024011507491710592755321075875840"); list.add("002212024011507554110592756933202669568"); list.add("002212024011508190310592762813564571648"); list.add("002212024011508281610592765131039866880"); list.add("002212024011508292710592765429579112448"); list.add("002212024011508570810592772394898530304"); list.add("002212024011509053810592774537225039872"); list.add("002212024011509065510592774860207505408"); list.add("002212024011509120510592776159511400448"); list.add("002212024011509272210592780005297221632"); list.add("002212024011509320910592781208429125632"); list.add("002212024011509382910592782802476703744"); list.add("002212024011509402710592783297798897664"); list.add("002212024011509440310592784204542197760"); list.add("002212024011509495810592785693526622208"); list.add("002212024011509571110592787509041291264"); list.add("002212024011510291310592795568748748800"); list.add("002212024011510540210592801815717928960"); list.add("002212024011511053810592804736497778688"); list.add("002212024011511172010592807680662261760"); list.add("002212024011511184910592808051960872960"); list.add("002212024011511280110592810367643975680"); list.add("002212024011511325010592811580421533696"); list.add("002212024011511333710592811777957666816"); list.add("002212024011511471010592815185380876288"); list.add("002212024011511500310592815913471963136"); list.add("002212024011511514910592816358041018368"); list.add("002212024011512040610592819448173486080"); list.add("002212024011512070410592820193500676096"); list.add("002212024011512074510592820367556595712"); list.add("002212024011512134710592821886964162560"); list.add("002212024011512194010592823365333643264"); list.add("002212024011512201510592823510623272960"); list.add("002212024011512204910592823653843419136"); list.add("002212024011512213610592823850860929024"); list.add("002212024011512283010592825590060843008"); list.add("002212024011512371910592827808839032832"); list.add("002212024011512410210592828741173080064"); list.add("002212024011512434810592829438059737088"); list.add("002212024011512453410592829882328805376"); list.add("002212024011512470210592830253128441856"); list.add("002212024011512485810592830741116829696"); list.add("002212024011512503910592831161387532288"); list.add("002212024011512531510592831816143171584"); list.add("002212024011512570910592832799226040320"); list.add("002212024011512582810592833130806198272"); list.add("002212024011513001810592833591815544832"); list.add("002212024011513023910592834181786198016"); list.add("002212024011513041010592834565906751488"); list.add("002212024011513043710592834677192949760"); list.add("002212024011513074810592835478824345600"); list.add("002212024011513080410592835544918368256"); list.add("002212024011513122110592836621902970880"); list.add("002212024011513224110592839224094785536"); list.add("002212024011513241810592839632769470464"); list.add("002212024011513270510592840330978750464"); list.add("002212024011513270610592840336901488640"); list.add("002212024011513281410592840621316591616"); list.add("002212024011513310010592841317962469376"); list.add("002212024011513351610592842391837437952"); list.add("002212024011513404110592843752177065984"); list.add("002212024011513413010592843958683623424"); list.add("002212024011513460610592845115543883776"); list.add("002212024011513574710592848056396910592"); list.add("002212024011513594910592848568747921408"); list.add("002212024011514025410592849343255838720"); list.add("002212024011514194010592853563052613632"); list.add("002212024011514203810592853807136088064"); list.add("002212024011514321410592856726669524992"); list.add("002212024011514340510592857191843528704"); list.add("002212024011514343010592857297254076416"); list.add("002212024011514352810592857541598150656"); list.add("002212024011514372510592858033385762816"); list.add("002212024011514431210592859487117090816"); list.add("002212024011514464210592860369435131904"); list.add("002212024011514475710592860684472631296"); list.add("002212024011514510910592861486042419200"); list.add("002212024011514514210592861627915018240"); list.add("002212024011514515710592861688132374528"); list.add("002212024011514555310592862677187092480"); list.add("002212024011515010010592863965081690112"); list.add("002212024011515065910592865472063598592"); list.add("002212024011515121410592866793733652480"); list.add("002212024011515152110592867578902319104"); list.add("002212024011515180610592868269035307008"); list.add("002212024011515290110592871015235940352"); list.add("002212024011515320610592871791191642112"); list.add("002212024011515414610592874224252805120"); list.add("002212024011516020610592879342415089664"); list.add("002212024011516044910592880028548698112"); list.add("002212024011516121610592881899766210560"); list.add("002212024011516154310592882771183112192"); list.add("002212024011516525110592892113500463104"); list.add("002212024011517145210592897654754828288"); list.add("002212024011517275510592900938590707712"); list.add("002212024011517310510592901734401175552"); list.add("002212024011517445410592905212429176832"); list.add("002212024011517473910592905905504505856"); list.add("002212024011517570510592908278610124800"); list.add("002212024011518312410592916913584685057"); list.add("002212024011519172010592928476413136896"); list.add("002212024011519274410592931093394677760"); list.add("002212024011519414910592934638361731072"); list.add("002212024011519495410592936671236050944"); list.add("002212024011519510410592936965911044096"); list.add("002212024011520041510592940280472330240"); list.add("002212024011520304710592946960069255168"); list.add("002212024011520325810592947508759683072"); list.add("002212024011520564810592953505934295040"); list.add("002212024011520565910592953552693207040"); list.add("002212024011521045510592955549802549248"); list.add("002212024011521060310592955832290897920"); list.add("002212024011521072310592956168497917952"); list.add("002212024011521084210592956500596740096"); list.add("002212024011521092810592956692363821056"); list.add("002212024011521202810592959461810888704"); list.add("002212024011521253110592960734453202944"); list.add("002212024011521291710592961682667659264"); list.add("002212024011521353910592963282781421568"); list.add("002212024011521362410592963472964558848"); list.add("002212024011521382010592963957907648512"); list.add("002212024011521410710592964661258874880"); list.add("002212024011521465610592966121411682304"); list.add("002212024011521470410592966154857119744"); list.add("002212024011521504810592967095050784768"); list.add("002212024011522003110592969543451893760"); list.add("002212024011522033010592970293552713728"); list.add("002212024011522043310592970556053348352"); list.add("002212024011522050410592970684901703680"); list.add("002212024011522101710592971998935748608"); list.add("002212024011522155810592973427780255744"); list.add("002212024011522245610592975684063911936"); list.add("002212024011522273010592976331465154560"); list.add("002212024011522285310592976681486213120"); list.add("002212024011522291310592976764427911168"); list.add("002212024011522304010592977129533034496"); list.add("002212024011522331310592977771086581760"); list.add("002212024011522340010592977967664025600"); list.add("002212024011522342810592978086055763968"); list.add("002212024011522361910592978551441182720"); list.add("002212024011522365210592978689521983488"); list.add("002212024011522453710592980891325943808"); list.add("002212024011522481510592981555500236800"); list.add("002212024011522530410592982766641205248"); list.add("002212024011522533910592982911070720000"); list.add("002212024011522555710592983490333732864"); list.add("002212024011522561410592983563747647488"); list.add("002212024011522585910592984255201665024"); list.add("002212024011522590710592984287380369408"); list.add("002212024011523103610592987176945446912"); list.add("002212024011523173910592988950542667776"); list.add("002212024011523215310592990018677407744"); list.add("002212024011523221310592990103296643072"); list.add("002212024011523222910592990169973817344"); list.add("002212024011523232710592990412975013888"); list.add("002212024011523251210592990853821206528"); list.add("002212024011523255310592991023392989184"); list.add("002212024011523271210592991356281122816"); list.add("002212024011523300010592992058659000320"); list.add("002212024011523302210592992151337861120"); list.add("002212024011523305410592992287277051904"); list.add("002212024011523374810592994023993729024"); list.add("002212024011523401710592994649829990400"); list.add("002212024011523424210592995255717163008"); list.add("002212024011523532410592997948104888320"); list.add("002212024011523564110592998775225683968"); list.add("002212024011600115410593002607041241088"); list.add("002212024011600130010593002882430885888"); list.add("002212024011600144410593003318407843840"); list.add("002212024011600161210593003685920456704"); list.add("002212024011600193610593004542370725888"); list.add("002212024011600210310593004906281914368"); list.add("002212024011600241210593005699241566208"); list.add("002212024011600270310593006415992549376"); list.add("002212024011600291010593006952222658560"); list.add("002212024011600330510593007934809673728"); list.add("002212024011600373910593009085608054784"); list.add("002212024011600380510593009196025151488"); list.add("002212024011600453210593011070207950848"); list.add("002212024011600460210593011195491049472"); list.add("002212024011600522610593012805678088192"); list.add("002212024011600561710593013774065500160"); list.add("002212024011600585110593014419602264064"); list.add("002212024011601053410593016111114706944"); list.add("002212024011601084810593016922740576256"); list.add("002212024011601092710593017088872763392"); list.add("002212024011601152410593018587286986752"); list.add("002212024011601214110593020165213511680"); list.add("002212024011601314110593022682425147392"); list.add("002212024011601335510593023246343241728"); list.add("002212024011601355210593023737779933184"); list.add("002212024011601380510593024294353534976"); list.add("002212024011601412410593025127746236416"); list.add("002212024011602000610593029833122070528"); list.add("002212024011602010910593030097098895360"); list.add("002212024011602140210593033339801362432"); list.add("002212024011602170610593034110779387904"); list.add("002212024011602210510593035113298882560"); list.add("002212024011602230510593035617321779200"); list.add("002212024011602263710593036509613293568"); list.add("002212024011602274510593036791986098176"); list.add("002212024011602275310593036827770703872"); list.add("002212024011602283410593036998731997184"); list.add("002212024011602312310593037705593913344"); list.add("002212024011602320810593037897498849280"); list.add("002212024011602382210593039464373764096"); list.add("002212024011603195010593049901604134912"); list.add("002212024011603224210593050623509110784"); list.add("002212024011604344410593068747914403840"); list.add("002212024011604354010593068985056190464"); list.add("002212024011604393610593069974371598336"); list.add("002212024011604532210593073437798514688"); list.add("002212024011605052510593076468944633856"); list.add("002212024011605052810593076482017030144"); list.add("002212024011605203810593080299090771968"); list.add("002212024011605283810593082313748996096"); list.add("002212024011606121010593093268832641024"); list.add("002212024011606203210593095374811619328"); list.add("002212024011606573510593104700065792000"); list.add("002212024011608443610593131629268860928"); list.add("002212024011609015510593135988112572416"); list.add("002212024011609061510593137079841644544"); list.add("002212024011609100610593138047730806784"); list.add("002212024011609175010593139992884277248"); list.add("002212024011609231810593141369400324096"); list.add("002212024011609430510593146348291977216"); list.add("002212024011609493210593147971278835712"); list.add("002212024011609510610593148367252615168"); list.add("002212024011609572810593149966624612352"); list.add("002212024011609580910593150138195017728"); list.add("002212024011610135610593154112074891264"); list.add("002212024011610351610593159480092614656"); list.add("002212024011610383110593160298393083904"); list.add("002212024011610463110593162313263079424"); list.add("002212024011610475610593162666988437504"); list.add("002212024011610481210593162733949771776"); list.add("002212024011611042810593166827217911808"); list.add("002212024011611054510593167150800076800"); list.add("002212024011611074310593167645848735744"); list.add("002212024011611260110593172251814739968"); list.add("002212024011611322410593173859355713536"); list.add("002212024011611431110593176573075476480"); list.add("002212024011611481210593177835658969088"); list.add("002212024011612012110593181143316406272"); list.add("002212024011612121410593183884712308736"); list.add("002212024011612132910593184195809280000"); list.add("002212024011612233810593186753314254848"); list.add("002212024011612324110593189031105392640"); list.add("002212024011612324710593189056258633728"); list.add("002212024011612353210593189748473982976"); list.add("002212024011612382910593190488204804096"); list.add("002212024011612390410593190635951837184"); list.add("002212024011612393810593190777552191488"); list.add("002212024011612412210593191216524664832"); list.add("002212024011612453910593192292149551104"); list.add("002212024011612464810593192583921483776"); list.add("002212024011612493610593193286453288960"); list.add("002212024011612493710593193292120944640"); list.add("002212024011612495210593193351802740736"); list.add("002212024011612525410593194115249291264"); list.add("002212024011612531510593194206778085376"); list.add("002212024011612573710593195304829403136"); list.add("002212024011612580610593195425175040000"); list.add("002212024011613021810593196483414712320"); list.add("002212024011613065910593197663167574016"); list.add("002212024011613131910593199256325144576"); list.add("002212024011613142310593199521758347264"); list.add("002212024011613172610593200291354411008"); list.add("002212024011613271310593202753838440448"); list.add("002212024011613301210593203504656785408"); list.add("002212024011613380310593205478042071040"); list.add("002212024011613384710593205662642970624"); list.add("002212024011613402310593206067101556736"); list.add("002212024011613423610593206622404403200"); list.add("002212024011613440810593207011063226368"); list.add("002212024011613442810593207093809987584"); list.add("002212024011613455410593207456871604224"); list.add("002212024011613480710593208014166982656"); list.add("002212024011613481110593208029388054528"); list.add("002212024011613511410593208796067885056"); list.add("002212024011613521510593209051992657920"); list.add("002212024011613564410593210182951100416"); list.add("002212024011613585510593210730075086848"); list.add("002212024011614062010593212597798862848"); list.add("002212024011614074410593212947702083584"); list.add("002212024011614083510593213162347782144"); list.add("002212024011614111810593213848178085888"); list.add("002212024011614130410593214293391523840"); list.add("002212024011614193610593215936546422784"); list.add("002212024011614291010593218344507572224"); list.add("002212024011614341210593219611639517184"); list.add("002212024011614395010593221027504537600"); list.add("002212024011614404310593221247959289856"); list.add("002212024011614450910593222367578349568"); list.add("002212024011614510110593223842507472896"); list.add("002212024011614521810593224166133833728"); list.add("002212024011614551810593224918579445760"); list.add("002212024011614572210593225439505498112"); list.add("002212024011615025510593226835568988160"); list.add("002212024011615123210593229256316059648"); list.add("002212024011615125210593229340743000064"); list.add("002212024011615134210593229552252317696"); list.add("002212024011615182110593230721168105472"); list.add("002212024011615193710593231040140644352"); list.add("002212024011615270710593232926617214976"); return list; } public List getPaymentIdList2() { List list = Lists.newArrayList(); list.add("002212024011615365310593235385330802688"); list.add("002212024011615380110593235669026992128"); list.add("002212024011615392010593236000660246528"); list.add("002212024011615454410593237613261201408"); list.add("002212024011615461910593237758917378048"); list.add("002212024011615511010593238979106672640"); list.add("002212024011616103710593243876091658240"); list.add("002212024011616173710593245634813075456"); list.add("002212024011616234110593247160828641280"); list.add("002212024011616502610593253894231126016"); list.add("002212024011616553810593255201018060800"); list.add("002212024011617070310593258077714747392"); list.add("002212024011617153510593260222709100544"); list.add("002212024011617163310593260466161426432"); list.add("002212024011617272610593263205549449216"); list.add("002212024011617485410593268607056834560"); list.add("002212024011618153110593275307057864704"); list.add("002212024011618245910593277688587870208"); list.add("002212024011618374310593280894615347200"); list.add("002212024011618432410593282321758674944"); list.add("002212024011618510110593284240340344832"); list.add("002212024011619131510593289833453117440"); list.add("002212024011619135510593290002284277760"); list.add("002212024011619185810593291274750103552"); list.add("002212024011619212010593291870448336896"); list.add("002212024011619314610593294495141056512"); list.add("002212024011619343510593295203466698752"); list.add("002212024011619353210593295441294123008"); list.add("002212024011619431010593297365958295552"); list.add("002212024011620073510593303510589763584"); list.add("002212024011620144310593305303900332032"); list.add("002212024011620174010593306047944577024"); list.add("002212024011620223910593307299012112384"); list.add("002212024011620413810593312078158471168"); list.add("002212024011620571610593316013304004608"); list.add("002212024011621002010593316782879727616"); list.add("002212024011621024310593317385250922496"); list.add("002212024011621071810593318538827132928"); list.add("002212024011621082110593318803083788288"); list.add("002212024011621165610593320961563508736"); list.add("002212024011621175310593321198458490880"); list.add("002212024011621232210593322578126434304"); list.add("002212024011621311610593324570004324352"); list.add("002212024011621395910593326763490574336"); list.add("002212024011621443510593327918471548928"); list.add("002212024011621552110593330627843055616"); list.add("002212024011621560510593330813920309248"); list.add("002212024011622040810593332841154187264"); list.add("002212024011622071510593333624439263232"); list.add("002212024011622082810593333928316858368"); list.add("002212024011622150610593335598786506752"); list.add("002212024011622224610593337527873126400"); list.add("002212024011622253310593338227513057280"); list.add("002212024011622263910593338506290622464"); list.add("002212024011622270410593338610022998016"); list.add("002212024011622285510593339075952332800"); list.add("002212024011622285810593339088452673536"); list.add("002212024011622290910593339135058464768"); list.add("002212024011622304310593339530765004800"); list.add("002212024011622312810593339716461821952"); list.add("002212024011622320410593339869604044800"); list.add("002212024011622321210593339904003534848"); list.add("002212024011622324510593340040060559360"); list.add("002212024011622330010593340103796539392"); list.add("002212024011622331510593340165153570816"); list.add("002212024011622343410593340499215212544"); list.add("002212024011622433510593342768310513664"); list.add("002212024011622444010593343041789681664"); list.add("002212024011622482910593344001846927360"); list.add("002212024011622484410593344062108717056"); list.add("002212024011623050910593348194022621184"); list.add("002212024011623065510593348637968523264"); list.add("002212024011623071510593348724597678080"); list.add("002212024011623071610593348725813993472"); list.add("002212024011623084510593349100718424064"); list.add("002212024011623091410593349223388504064"); list.add("002212024011623093310593349300375683072"); list.add("002212024011623114710593349865246920704"); list.add("002212024011623123010593350044661272576"); list.add("002212024011623135710593350407776215040"); list.add("002212024011623144110593350595309596672"); list.add("002212024011623205010593352141187440640"); list.add("002212024011623275610593353926734209024"); list.add("002212024011623275810593353934967656448"); list.add("002212024011623295610593354433582292992"); list.add("002212024011623331210593355254704717824"); list.add("002212024011623344310593355637188362240"); list.add("002212024011623430710593357747724910592"); list.add("002212024011623433410593357861632425984"); list.add("002212024011623481610593359045362114560"); list.add("002212024011623482410593359078694162432"); list.add("002212024011623542110593360576536768512"); list.add("002212024011623585410593361723085660160"); list.add("002212024011700175910593366524869427200"); list.add("002212024011700181110593366573433331712"); list.add("002212024011700210210593367290154536960"); list.add("002212024011700240510593368057015033856"); list.add("002212024011700263110593368671491883008"); list.add("002212024011700264610593368735898222592"); list.add("002212024011700302810593369665316708352"); list.add("002212024011700302910593369671468482560"); list.add("002212024011700380110593371564128550912"); list.add("002212024011700384710593371757412720640"); list.add("002212024011700385710593371799376551936"); list.add("002212024011700411410593372373253722112"); list.add("002212024011700443210593373204681019392"); list.add("002212024011700461210593373624968519680"); list.add("002212024011700462910593373695515901952"); list.add("002212024011700533510593375482109595648"); list.add("002212024011700540410593375604933517312"); list.add("002212024011700583210593376727524605952"); list.add("002212024011700584710593376791915384832"); list.add("002212024011701023010593377728432164864"); list.add("002212024011701061510593378671169798144"); list.add("002212024011701074410593379042352357376"); list.add("002212024011701095610593379598377644032"); list.add("002212024011701184410593381811004071936"); list.add("002212024011701214810593382583925174272"); list.add("002212024011701275310593384115057098752"); list.add("002212024011701430710593387948196720640"); list.add("002212024011701435710593388158968885248"); list.add("002212024011701540210593390695863238656"); list.add("002212024011701544010593390854354464768"); list.add("002212024011701563810593391351699267584"); list.add("002212024011702065510593393939282878464"); list.add("002212024011702151310593396024707633152"); list.add("002212024011702172410593396576831885312"); list.add("002212024011702230910593398022708346880"); list.add("002212024011702273610593399142264553472"); list.add("002212024011702350410593401020833234944"); list.add("002212024011702382710593401873186381824"); list.add("002212024011702440510593403290414346240"); list.add("002212024011702441210593403322422607872"); list.add("002212024011702461110593403817618264064"); list.add("002212024011702483310593404413403652096"); list.add("002212024011702522810593405401812275200"); list.add("002212024011703173810593411736063606784"); list.add("002212024011703212810593412699813302272"); list.add("002212024011703593010593422269733097472"); list.add("002212024011704022010593422984921964544"); list.add("002212024011704054910593423858925793280"); list.add("002212024011704061410593423965042728960"); list.add("002212024011704221310593427986766581760"); list.add("002212024011704243910593428601312460800"); list.add("002212024011704343210593431087891562496"); list.add("002212024011704441210593433520656433152"); list.add("002212024011704443010593433595982630912"); list.add("002212024011704443110593433597633052672"); list.add("002212024011704444410593433655028699136"); list.add("002212024011705295110593445006611136512"); list.add("002212024011705321110593445593411854336"); list.add("002212024011705413210593447949191835648"); list.add("002212024011705511710593450403183828992"); list.add("002212024011705583710593452248887037952"); list.add("002212024011705591910593452423882113024"); list.add("002212024011707020710593468227069362176"); list.add("002212024011707315310593475718769500160"); list.add("002212024011708232510593488687142379520"); list.add("002212024011709000810593497927286366208"); list.add("002212024011709111810593500739338452992"); list.add("002212024011709395210593507926465011712"); list.add("002212024011709502710593510588359802880"); list.add("002212024011710055910593514499335643136"); list.add("002212024011710232410593518883119669248"); list.add("002212024011711061010593529645572898816"); list.add("002212024011711142210593531707262926848"); list.add("002212024011711311110593535940287221760"); list.add("002212024011711405010593538368898289664"); list.add("002212024011711422610593538770751643648"); list.add("002212024011711540710593541713538277376"); list.add("002212024011711542110593541770537824256"); list.add("002212024011711572410593542539683950592"); list.add("002212024011711585110593542903657263104"); list.add("002212024011712044910593544406021279744"); list.add("002212024011712170710593547500723494912"); list.add("002212024011712222810593548844093489152"); list.add("002212024011712235410593549206129696768"); list.add("002212024011712255710593549722197065728"); list.add("002212024011712334010593551666395906048"); list.add("002212024011712353810593552158374453248"); list.add("002212024011712354210593552176231608320"); list.add("002212024011712365110593552464712519680"); list.add("002212024011712420510593553781069934592"); list.add("002212024011712422510593553864935968769"); list.add("002212024011712450310593554529421848576"); list.add("002212024011712472310593555117483180032"); list.add("002212024011712524110593556449275363328"); list.add("002212024011712583910593557953459740672"); list.add("002212024011713021410593558855115554816"); list.add("002212024011713095910593560806030938112"); list.add("002212024011713164110593562491182772224"); list.add("002212024011713212510593563681066401792"); list.add("002212024011713215410593563801515040768"); list.add("002212024011713265810593565078138351616"); list.add("002212024011713294310593565771921219584"); list.add("002212024011713371110593567648756895744"); list.add("002212024011713384910593568059385573376"); list.add("002212024011713413910593568771329073152"); list.add("002212024011713434210593569287966543872"); list.add("002212024011713472710593570232295178240"); list.add("002212024011713474810593570320782319616"); list.add("002212024011713533110593571760980574208"); list.add("002212024011713551610593572200436715520"); list.add("002212024011713584810593573089255178240"); list.add("002212024011713590910593573176971288576"); list.add("002212024011714025510593574126175870976"); list.add("002212024011714033710593574299231809536"); list.add("002212024011714054310593574830114181120"); list.add("002212024011714080610593575427814158336"); list.add("002212024011714113210593576295574724608"); list.add("002212024011714152910593577287392391168"); list.add("002212024011714270510593580205370609664"); list.add("002212024011714305610593581177595707392"); list.add("002212024011714371110593582749963419648"); list.add("002212024011714403410593583599367999488"); list.add("002212024011714432410593584311304818688"); list.add("002212024011714441510593584527172136960"); list.add("002212024011714473510593585365222285312"); list.add("002212024011714521610593586544091295744"); list.add("002212024011714522210593586571045142528"); list.add("002212024011714545510593587212372799488"); list.add("002212024011714564310593587665173078016"); list.add("002212024011715010410593588757674053632"); list.add("002212024011715041110593589542658990080"); list.add("002212024011715062810593590116092379136"); list.add("002212024011715071410593590312250859520"); list.add("002212024011715084010593590671781740544"); list.add("002212024011715094910593590961202110464"); list.add("002212024011715371210593597853013741568"); list.add("002212024011715383210593598188811841536"); list.add("002212024011715541510593602141253459968"); list.add("002212024011716020610593604116498776064"); list.add("002212024011716204310593608803132981248"); list.add("002212024011716440410593614679598817280"); list.add("002212024011716444210593614840446185472"); list.add("002212024011716552210593617522840731648"); list.add("002212024011717075210593620667934810112"); list.add("002212024011717154710593622659759267840"); list.add("002212024011717264010593625402010718208"); list.add("002212024011717375210593628219808374784"); list.add("002212024011717504110593631443353501696"); list.add("002212024011718151410593637621541998592"); list.add("002212024011718454710593645311228223488"); list.add("002212024011718460610593645388841476096"); list.add("002212024011718470210593645624116764672"); list.add("002212024011718471010593645660954066944"); list.add("002212024011718482010593645952904151040"); list.add("002212024011718483110593645997619539968"); list.add("002212024011718541210593647428205887488"); list.add("002212024011718564510593648069926674432"); list.add("002212024011719124510593652097805033472"); list.add("002212024011719380210593658459519672320"); list.add("002212024011719460210593660473454575616"); list.add("002212024011719463110593660596391936000"); list.add("002212024011719540010593662477217263616"); list.add("002212024011720032210593664835302035456"); list.add("002212024011720310810593671822742077440"); list.add("002212024011720311710593671860465561600"); list.add("002212024011720381110593673596362244096"); list.add("002212024011720391610593673871757492224"); list.add("002212024011720401210593674103300661248"); list.add("002212024011720423610593674707406118912"); list.add("002212024011720482410593676166495633408"); list.add("002212024011720484110593676239719555072"); list.add("002212024011720535710593677566937874432"); list.add("002212024011721023610593679740696776704"); list.add("002212024011721061910593680676966064128"); list.add("002212024011721125410593682333178609664"); list.add("002212024011721140510593682631276814336"); list.add("002212024011721233210593685008742539264"); list.add("002212024011721241510593685188313190400"); list.add("002212024011721250010593685378108444672"); list.add("002212024011721283710593686290649702400"); list.add("002212024011721374610593688591871369216"); list.add("002212024011721382410593688751454396416"); list.add("002212024011721441810593690236254609408"); list.add("002212024011721444410593690345243631616"); list.add("002212024011721465110593690878527098880"); list.add("002212024011721472310593691010783207424"); list.add("002212024011721511610593691987791679488"); list.add("002212024011721512310593692019903594496"); list.add("002212024011721520810593692208468803584"); list.add("002212024011721521410593692230734303232"); list.add("002212024011721575910593693681116237824"); list.add("002212024011721592510593694041453060096"); list.add("002212024011722013910593694602812321792"); list.add("002212024011722044210593695371415482368"); list.add("002212024011722073010593696073324793856"); list.add("002212024011722123510593697352942043136"); list.add("002212024011722134210593697635540303872"); list.add("002212024011722140810593697744725843968"); list.add("002212024011722172410593698564787773440"); list.add("002212024011722264310593700911782461440"); list.add("002212024011722274110593701155465936896"); list.add("002212024011722315610593702221312552960"); list.add("002212024011722322710593702354141966336"); list.add("002212024011722324810593702442992066560"); list.add("002212024011722331810593702566995652608"); list.add("002212024011722333010593702616544157696"); list.add("002212024011722375810593703741200371712"); list.add("002212024011722383410593703890943426560"); list.add("002212024011722460110593705769201029120"); list.add("002212024011722462510593705870271873024"); list.add("002212024011722505010593706980658806784"); list.add("002212024011722530110593707529990791168"); list.add("002212024011722551110593708073484656640"); list.add("002212024011722562110593708367458418688"); list.add("002212024011722564010593708448673419264"); list.add("002212024011722573410593708676013056000"); list.add("002212024011723053310593710683246522368"); list.add("002212024011723082310593711395170906112"); list.add("002212024011723103410593711944250290176"); list.add("002212024011723145710593713047638601728"); list.add("002212024011723170210593713574436044800"); list.add("002212024011723192310593714165983666176"); list.add("002212024011723234910593715280959062016"); list.add("002212024011723304610593717030322126848"); list.add("002212024011723315610593717323256426496"); list.add("002212024011723371610593718665880375296"); list.add("002212024011723422810593719971687919616"); list.add("002212024011723472810593721230007418880"); list.add("002212024011723491110593721665415364608"); list.add("002212024011723513110593722249796026368"); list.add("002212024011723540010593722874933755904"); list.add("002212024011723575310593723853991419904"); list.add("002212024011800002010593724471025721344"); list.add("002212024011800013810593724796345479168"); list.add("002212024011800022610593724999719936000"); list.add("002212024011800040410593725408224903168"); list.add("002212024011800063410593726039710924800"); list.add("002212024011800091810593726727139725312"); list.add("002212024011800153110593728289398538240"); list.add("002212024011800235110593730389822885888"); list.add("002212024011800250810593730712036831232"); list.add("002212024011800252010593730759573217280"); list.add("002212024011800314610593732382025281536"); list.add("002212024011800332610593732798266949632"); list.add("002212024011800332810593732807010713600"); list.add("002212024011800340410593732960127451136"); list.add("002212024011800413210593734840022716416"); list.add("002212024011800461810593736038448467968"); list.add("002212024011801024710593740187343736832"); list.add("002212024011801031510593740304022228992"); list.add("002212024011801041910593740570547056640"); list.add("002212024011801074010593741415797940224"); list.add("002212024011801184010593744184066928640"); list.add("002212024011801211910593744849850699776"); list.add("002212024011801213210593744903927316480"); list.add("002212024011801214610593744961879633920"); list.add("002212024011801235810593745515403005952"); list.add("002212024011801243810593745682961432576"); list.add("002212024011801300710593747063474327552"); list.add("002212024011801341010593748083889917952"); list.add("002212024011801463810593751222373662720"); list.add("002212024011801464710593751260462137344"); list.add("002212024011801491410593751874002124800"); list.add("002212024011801493110593751946625105920"); list.add("002212024011801500410593752085333405696"); list.add("002212024011801570510593753852769165312"); list.add("002212024011801585810593754325340352512"); list.add("002212024011802022210593755178740383744"); list.add("002212024011802024110593755259497512960"); list.add("002212024011802111310593757408108036096"); list.add("002212024011802121010593757648668811264"); list.add("002212024011802192110593759455846289408"); list.add("002212024011802265110593761343400800256"); list.add("002212024011802324010593762807570604032"); list.add("002212024011802363310593763783658303488"); list.add("002212024011802394510593764588933337088"); list.add("002212024011802405410593764878606614528"); list.add("002212024011802500710593767196094853120"); list.add("002212024011802581210593769231117819904"); list.add("002212024011802591610593769501092405248"); list.add("002212024011803084410593771882662195200"); list.add("002212024011803135010593773164179476480"); list.add("002212024011803180610593774241232576512"); list.add("002212024011803311410593777545769508864"); list.add("002212024011803374410593779179247620096"); list.add("002212024011803483110593781892331028480"); list.add("002212024011803515710593782759680331776"); list.add("002212024011803520210593782777163653120"); list.add("002212024011803535010593783233344397312"); list.add("002212024011804005010593784994356514816"); list.add("002212024011804062510593786397531734016"); list.add("002212024011804064010593786462299971584"); list.add("002212024011804090410593787067563204608"); list.add("002212024011804170410593789080095268864"); list.add("002212024011804225410593790547492302848"); list.add("002212024011804351210593793641145597952"); list.add("002212024011804421510593795417308786688"); list.add("002212024011805002110593799971293204480"); list.add("002212024011805082210593801988183326720"); list.add("002212024011805192210593804758351036416"); list.add("002212024011805301910593807511993556992"); list.add("002212024011805355810593808934209548288"); list.add("002212024011805505310593812687309365248"); list.add("002212024011806050210593816251487449088"); list.add("002212024011806092110593817334776553472"); list.add("002212024011806132110593818341526982656"); list.add("002212024011807274510593837065382236160"); list.add("002212024011807461210593841707129847808"); list.add("002212024011808192010593850047938908160"); list.add("002212024011808462010593856842229313536"); list.add("002212024011809031310593861090255151104"); list.add("002212024011809264310593867005665439744"); list.add("002212024011809434910593871306756800512"); list.add("002212024011809511210593873165861740544"); list.add("002212024011810010210593875640436871168"); list.add("002212024011810061310593876946594811904"); list.add("002212024011810131810593878728431558656"); list.add("002212024011810180810593879945474691072"); list.add("002212024011810185110593880124014972928"); list.add("002212024011810425410593886178581577728"); list.add("002212024011810514610593888410047012864"); list.add("002212024011811043710593891643089874944"); list.add("002212024011811060210593891997695303680"); list.add("002212024011811124910593893706374942720"); list.add("002212024011811230510593896291152531456"); list.add("002212024011811392010593900380657917952"); list.add("002212024011811460510593902076316303360"); list.add("002212024011811464510593902243628150784"); list.add("002212024011811551810593904398732849152"); list.add("002212024011811580110593905081582047232"); list.add("002212024011812023010593906210490675200"); list.add("002212024011812041710593906656303333376"); list.add("002212024011812073110593907471216730112"); list.add("002212024011812125110593908812649459712"); list.add("002212024011812165010593909817040863232"); list.add("002212024011812172710593909970152411136"); list.add("002212024011812213810593911024356286464"); list.add("002212024011812244110593911792161386496"); list.add("002212024011812340310593914148148076544"); list.add("002212024011812344710593914334301900800"); list.add("002212024011812372010593914976991084544"); list.add("002212024011812382810593915259357622272"); list.add("002212024011812415110593916111801651200"); list.add("002212024011812500210593918172630978560"); list.add("002212024011812514510593918602975281152"); list.add("002212024011812531310593918972736409600"); list.add("002212024011812544410593919353559089152"); list.add("002212024011813033610593921585548992512"); list.add("002212024011813074110593922614736580608"); list.add("002212024011813120910593923739093143552"); list.add("002212024011813161210593924755838025728"); list.add("002212024011813170410593924975112044544"); list.add("002212024011813192110593925549549895680"); list.add("002212024011813205710593925950915428352"); list.add("002212024011813212310593926062645403648"); list.add("002212024011813272210593927568627236864"); list.add("002212024011813301410593928287189954560"); list.add("002212024011813413010593931122158821376"); list.add("002212024011813491110593933057267036160"); list.add("002212024011813522710593933880319885312"); list.add("002212024011813572510593935130413887488"); list.add("002212024011814034510593936722574024704"); list.add("002212024011814040410593936800485163008"); list.add("002212024011814061810593937363274784768"); list.add("002212024011814092010593938126738776064"); list.add("002212024011814155010593939762295005184"); list.add("002212024011814205910593941060662779904"); list.add("002212024011814215610593941297137819648"); list.add("002212024011814263010593942448595091456"); list.add("002212024011814281110593942870014136320"); list.add("002212024011814283310593942964373659649"); list.add("002212024011814385810593945583796080640"); list.add("002212024011814465310593947578456068096"); list.add("002212024011814500410593948380281102336"); list.add("002212024011814513810593948773497016320"); list.add("002212024011814575610593950360144347136"); list.add("002212024011814594610593950821693186048"); list.add("002212024011815034510593951823833415680"); list.add("002212024011815052210593952231080054784"); list.add("002212024011815081910593952969443106816"); list.add("002212024011815091010593953187293286400"); list.add("002212024011815122810593954015541805056"); list.add("002212024011815181110593955455646253056"); list.add("002212024011815215310593956383654862848"); list.add("002212024011815272110593957763065040896"); list.add("002212024011815324210593959105663721472"); list.add("002212024011815330310593959197037785088"); list.add("002212024011815352210593959780432961536"); list.add("002212024011815364110593960111195803648"); list.add("002212024011815390910593960732317552640"); list.add("002212024011815400510593960967136509952"); list.add("002212024011815424710593961644906151936"); list.add("002212024011815491810593963286221717504"); list.add("002212024011815513110593963841295384576"); list.add("002212024011815584510593965662549012480"); list.add("002212024011816045510593967214123737088"); list.add("002212024011816172110593970344972468224"); list.add("002212024011816175910593970503139672064"); list.add("002212024011816222810593971631157923840"); list.add("002212024011816225510593971746023833600"); list.add("002212024011816263710593972677997420544"); list.add("002212024011816295110593973488484515840"); list.add("002212024011816442010593977135091580928"); list.add("002212024011816472710593977920196661248"); list.add("002212024011816482310593978155204976640"); list.add("002212024011817554610593995113339936768"); list.add("002212024011818023710593996836990697472"); list.add("002212024011818053010593997560181645312"); list.add("002212024011818074710593998136265105408"); list.add("002212024011818110810593998978362593280"); list.add("002212024011818312810594004094412378112"); list.add("002212024011819271410594018131171508224"); list.add("002212024011819484610594023549290799104"); list.add("002212024011819562510594025475729162240"); list.add("002212024011820094710594028839542419456"); list.add("002212024011820103510594029038829518848"); list.add("002212024011820175910594030901498863616"); list.add("002212024011820410610594036721102020608"); list.add("002212024011820500610594038982020681728"); list.add("002212024011820540110594039968546086912"); list.add("002212024011820545510594040196665925632"); list.add("002212024011820565710594040706863943680"); list.add("002212024011821013210594041860753932288"); list.add("002212024011821075610594043472673349632"); list.add("002212024011821094910594043944026890240"); list.add("002212024011821094910594043944733876224"); list.add("002212024011821101710594044063445143552"); list.add("002212024011821124110594044666040651776"); list.add("002212024011821153510594045398143918080"); list.add("002212024011821240810594047550079754240"); list.add("002212024011821265610594048254686609408"); list.add("002212024011821272010594048355727937536"); list.add("002212024011821313710594049431315374080"); list.add("002212024011821382910594051158181662720"); list.add("002212024011821393710594051447033917440"); list.add("002212024011821433610594052448611590144"); list.add("002212024011821451810594052877305090048"); list.add("002212024011821465110594053266765991936"); list.add("002212024011821491910594053885701779456"); list.add("002212024011821503010594054184610381824"); list.add("002212024011821503510594054207130230784"); list.add("002212024011821551010594055358099701760"); list.add("002212024011821591910594056402397511680"); list.add("002212024011822001210594056626136522752"); list.add("002212024011822020210594057086712233984"); list.add("002212024011822051210594057884426260480"); list.add("002212024011822065010594058295386210304"); list.add("002212024011822100910594059128789372928"); list.add("002212024011822124610594059786206699520"); list.add("002212024011822150710594060377694568448"); list.add("002212024011822182810594061223110541312"); list.add("002212024011822220510594062132408963072"); list.add("002212024011822240410594062632589418496"); list.add("002212024011822263910594063279899504640"); list.add("002212024011822274810594063572667162624"); list.add("002212024011822300710594064152781230080"); list.add("002212024011822302010594064209855246336"); list.add("002212024011822370510594065906333859840"); list.add("002212024011822390210594066399154102272"); list.add("002212024011822473110594068532574978048"); list.add("002212024011822520810594069694227640320"); list.add("002212024011822523910594069826009522176"); list.add("002212024011822542710594070277199220736"); list.add("002212024011822550210594070426273026048"); list.add("002212024011823000410594071691464003584"); list.add("002212024011823051610594072999452819456"); list.add("002212024011823060210594073191685779456"); list.add("002212024011823062910594073306797301760"); list.add("002212024011823095710594074177688207360"); list.add("002212024011823145410594075423680458752"); list.add("002212024011823172010594076037120163840"); list.add("002212024011823190410594076473460604928"); list.add("002212024011823233010594077590389645312"); list.add("002212024011823240110594077718532751360"); list.add("002212024011823274210594078645081030656"); list.add("002212024011823304710594079420547178496"); list.add("002212024011823370610594081010118942720"); list.add("002212024011823372610594081094403481600"); list.add("002212024011823394410594081671691587584"); list.add("002212024011823404610594081932943544320"); list.add("002212024011823445510594082977375690752"); list.add("002212024011823491410594084063629123584"); list.add("002212024011823511010594084549095227392"); list.add("002212024011823530910594085050543849472"); list.add("002212024011823534310594085194373480448"); list.add("002212024011823564610594085961676320768"); list.add("002212024011823584810594086470743191552"); list.add("002212024011823590510594086543350788096"); list.add("002212024011900002410594086873045303296"); list.add("002212024011900010410594087042119581696"); list.add("002212024011900073910594088697833578496"); list.add("002212024011900201210594091858799484928"); list.add("002212024011900231410594092620026060800"); list.add("002212024011900315710594094814640922624"); list.add("002212024011900315710594094815880364032"); list.add("002212024011900324210594095003606962176"); list.add("002212024011900340310594095343366529024"); list.add("002212024011900363410594095976519692288"); list.add("002212024011900402710594096955029839872"); list.add("002212024011900435010594097803103674368"); list.add("002212024011900485810594099095799558144"); list.add("002212024011900514110594099781843939328"); list.add("002212024011900530110594100114232344576"); list.add("002212024011900543010594100487395901440"); list.add("002212024011900584110594101540131921920"); list.add("002212024011901033410594102772636688384"); list.add("002212024011901091010594104182329679872"); list.add("002212024011901111110594104688021987328"); list.add("002212024011901191710594106725900087296"); list.add("002212024011901243110594108041993867264"); list.add("002212024011901283010594109046723895296"); list.add("002212024011901321710594109997312479232"); list.add("002212024011901335310594110401423294464"); list.add("002212024011901355210594110901516427264"); list.add("002212024011901410510594112210412666880"); list.add("002212024011901433310594112835107528704"); list.add("002212024011901481910594114032424939520"); list.add("002212024011901513610594114859463770112"); list.add("002212024011901541110594115507438960640"); list.add("002212024011901575010594116427459543040"); list.add("002212024011901594510594116909764632576"); list.add("002212024011902032710594117839872430080"); list.add("002212024011902093810594119397356064768"); list.add("002212024011902114310594119920034152448"); list.add("002212024011902142310594120594244628480"); list.add("002212024011902173610594121400536743936"); list.add("002212024011902184610594121695373459456"); list.add("002212024011902191510594121818508316672"); list.add("002212024011902241210594123062552748032"); list.add("002212024011902252210594123355465531392"); list.add("002212024011902311210594124823719014400"); list.add("002212024011902330910594125313618296832"); list.add("002212024011902454610594128491290746880"); list.add("002212024011902574210594131494309675008"); list.add("002212024011903055210594133549654294528"); list.add("002212024011903195710594137091786833920"); list.add("002212024011903241610594138178555297792"); list.add("002212024011903270710594138896442454016"); list.add("002212024011903440210594143153669398528"); list.add("002212024011903451310594143450464075776"); list.add("002212024011903570510594146438261145600"); list.add("002212024011904034610594148119836610560"); list.add("002212024011904185410594151926637105152"); list.add("002212024011904434910594158198358904832"); list.add("002212024011905131510594165607005790208"); list.add("002212024011905145710594166034292703232"); list.add("002212024011905411110594172633680146432"); list.add("002212024011905442310594173441000824832"); list.add("002212024011906142310594180989102813184"); list.add("002212024011906305510594185152904687616"); list.add("002212024011906594810594192421633515520"); list.add("002212024011907055710594193966113390592"); list.add("002212024011907361710594201601778864128"); list.add("002212024011907481610594204618105479168"); list.add("002212024011908133410594210982722785280"); list.add("002212024011908230010594213356551987200"); list.add("002212024011908475910594219646579765248"); list.add("002212024011908561610594221730454818816"); list.add("002212024011909272710594229576526102528"); list.add("002212024011909282610594229826526830592"); list.add("002212024011909360910594231767730651136"); list.add("002212024011909371910594232060652277760"); list.add("002212024011909403910594232900947501056"); list.add("002212024011909453410594234137767940096"); list.add("002212024011909494310594235180432089088"); list.add("002212024011909505910594235498420203520"); list.add("002212024011909542110594236346365865984"); list.add("002212024011909562010594236844977410048"); list.add("002212024011909573010594237140547792896"); list.add("002212024011909585610594237498361200640"); list.add("002212024011910032410594238623993425920"); list.add("002212024011910051210594239077413191680"); list.add("002212024011910115410594240763242381312"); list.add("002212024011910270310594244574457851904"); list.add("002212024011910572410594252215498002432"); list.add("002212024011911114710594255832498651136"); list.add("002212024011911334610594261365434302464"); list.add("002212024011911350710594261704982061056"); list.add("002212024011911390610594262708756537344"); list.add("002212024011911535510594266438065295360"); list.add("002212024011912015610594268455513784320"); list.add("002212024011912161610594272062034366464"); list.add("002212024011912182010594272582183931904"); list.add("002212024011912224210594273679281700864"); list.add("002212024011912234410594273940456730624"); list.add("002212024011912311210594275821662953472"); list.add("002212024011912364910594277232528187392"); list.add("002212024011912405010594278243378647040"); list.add("002212024011912451910594279373868331008"); list.add("002212024011912490710594280327207403520"); list.add("002212024011912500310594280564196040704"); list.add("002212024011912532210594281395951722496"); list.add("002212024011912570310594282325690654721"); list.add("002212024011913130210594286345391915008"); list.add("002212024011913203010594288225877393408"); list.add("002212024011913280210594290122553663488"); list.add("002212024011913290310594290378197524480"); list.add("002212024011913303210594290753250086912"); list.add("002212024011913321810594291195556024320"); list.add("002212024011913344410594291809669312512"); list.add("002212024011913415310594293607513808896"); list.add("002212024011913465210594294863760281600"); list.add("002212024011913491210594295449575587840"); list.add("002212024011913501510594295714264272896"); list.add("002212024011913521510594296218224599040"); list.add("002212024011913521810594296227461271552"); list.add("002212024011913544610594296849177944065"); list.add("002212024011913555010594297118257205248"); list.add("002212024011913575110594297623740350464"); list.add("002212024011914065610594299911902982144"); list.add("002212024011914081510594300243441700864"); list.add("002212024011914114310594301115470086144"); list.add("002212024011914202510594303306375200768"); list.add("002212024011914263010594304834187161600"); list.add("002212024011914315610594306202895294465"); list.add("002212024011914340510594306742594629632"); list.add("002212024011914431810594309064827437056"); list.add("002212024011914433710594309143251513344"); list.add("002212024011914474510594310183847813120"); list.add("002212024011914493010594310622276341760"); list.add("002212024011914525410594311481440923648"); list.add("002212024011914563610594312409662222336"); list.add("002212024011915023610594313922258227200"); list.add("002212024011915083510594315426959781888"); list.add("002212024011915202110594318388702863360"); list.add("002212024011915232110594319143629877248"); list.add("002212024011915253110594319686651805696"); list.add("002212024011915444810594324539645976576"); list.add("002212024011915502810594325968169291776"); list.add("002212024011916103910594331044069896193"); list.add("002212024011916125510594331614826352640"); list.add("002212024011916273310594335299950473216"); list.add("002212024011917593610594358462450622464"); list.add("002212024011918022610594359177345699840"); list.add("002212024011918295510594366095116791808"); list.add("002212024011918452210594369979730001920"); list.add("002212024011918485210594370862501982208"); list.add("002212024011918533810594372062076108800"); list.add("002212024011918571510594372971831615488"); list.add("002212024011919094810594376131648593920"); list.add("002212024011919140310594377200569274368"); list.add("002212024011919210410594378966508666880"); list.add("002212024011919232210594379545147305984"); list.add("002212024011919272810594380578406891520"); list.add("002212024011919350610594382495588675584"); list.add("002212024011919360510594382743052374016"); list.add("002212024011919370510594382995405078528"); list.add("002212024011919414910594384189517025280"); list.add("002212024011919543610594387406571372544"); list.add("002212024011919553510594387654283948032"); list.add("002212024011919554410594387691629383680"); list.add("002212024011920011210594389067520479232"); list.add("002212024011920030510594389541201465344"); list.add("002212024011920044810594389973198032896"); list.add("002212024011920055410594390249313103872"); list.add("002212024011920115610594391767284383744"); list.add("002212024011920273810594395719113265152"); list.add("002212024011920295710594396302178979840"); list.add("002212024011920340010594397320746070016"); list.add("002212024011920343510594397467856400384"); list.add("002212024011920363710594397979774750720"); list.add("002212024011920575210594403327442505728"); list.add("002212024011921014310594404294720311296"); list.add("002212024011921025310594404590564732928"); list.add("002212024011921074910594405830227255296"); list.add("002212024011921221310594409453429059584"); list.add("002212024011921242210594409996339531776"); list.add("002212024011921354810594412871658676224"); list.add("002212024011921363110594413054356484096"); list.add("002212024011921390210594413687469854720"); list.add("002212024011921401810594414006176145408"); list.add("002212024011921463410594415583538565120"); list.add("002212024011921593610594418863361814528"); list.add("002212024011922004810594419165079924736"); list.add("002212024011922032010594419803549224960"); list.add("002212024011922073210594420857301069824"); list.add("002212024011922085210594421195205935104"); list.add("002212024011922092810594421345467723776"); list.add("002212024011922112010594421816405360640"); list.add("002212024011922125210594422201827086336"); list.add("002212024011922133310594422372199788544"); list.add("002212024011922144910594422691149291520"); list.add("002212024011922180910594423530817712128"); list.add("002212024011922181110594423540728614912"); list.add("002212024011922192410594423845620187136"); list.add("002212024011922200510594424017441882112"); list.add("002212024011922201910594424076634910720"); list.add("002212024011922215510594424476431937536"); list.add("002212024011922234410594424937275883520"); list.add("002212024011922262810594425624368865280"); list.add("002212024011922271010594425801565446144"); list.add("002212024011922271610594425823627771904"); list.add("002212024011922272610594425867888095232"); list.add("002212024011922301010594426552624992256"); list.add("002212024011922342210594427613382828032"); list.add("002212024011922372110594428361048649728"); list.add("002212024011922420310594429543201492992"); list.add("002212024011922525810594432293632274433"); list.add("002212024011922554710594433002581614592"); list.add("002212024011922585610594433794266005504"); list.add("002212024011923022610594434674940825600"); list.add("002212024011923052010594435404060852224"); list.add("002212024011923063310594435712259084288"); list.add("002212024011923072410594435924509761536"); list.add("002212024011923093410594436468692647936"); list.add("002212024011923143710594437739250573312"); list.add("002212024011923213510594439495169200128"); list.add("002212024011923283710594441262931501056"); list.add("002212024011923301810594441688071962624"); list.add("002212024011923425010594444840138567680"); list.add("002212024011923463110594445769304301568"); list.add("002212024011923475510594446119422251008"); list.add("002212024011923501010594446688199233536"); list.add("002212024011923504910594446849255309312"); list.add("002212024011923511610594446962273902592"); list.add("002212024011923513210594447030437662720"); list.add("002212024011923581310594448711205355520"); list.add("002212024012000044010594450336457359360"); list.add("002212024012000071610594450989514399744"); list.add("002212024012000172410594453542159712256"); list.add("002212024012000264510594455894596878336"); list.add("002212024012000304710594456909967433728"); list.add("002212024012000340110594457723355914240"); list.add("002212024012000394210594459153304813568"); list.add("002212024012000404710594459426228174848"); list.add("002212024012000420010594459732625260544"); list.add("002212024012000453910594460649979441152"); list.add("002212024012000461410594460794863898624"); list.add("002212024012000465010594460947515830272"); list.add("002212024012000490410594461508357025792"); list.add("002212024012000521410594462308520488960"); list.add("002212024012000522810594462364758331392"); list.add("002212024012000525110594462460366229504"); list.add("002212024012000594310594464191046373376"); list.add("002212024012001035110594465229830791168"); list.add("002212024012001071310594466075876433920"); list.add("002212024012001081610594466341919256576"); list.add("002212024012001183510594468936366596096"); list.add("002212024012001272910594471176810909696"); list.add("002212024012001335610594472801529098240"); list.add("002212024012001380010594473824619495424"); list.add("002212024012001385110594474038829973504"); list.add("002212024012001402610594474438131802112"); list.add("002212024012001482110594476430386229248"); list.add("002212024012001484810594476541614977024"); list.add("002212024012001500210594476854211571712"); list.add("002212024012001520110594477351757500416"); list.add("002212024012002022810594479983330127872"); list.add("002212024012002034210594480292259266560"); list.add("002212024012002041510594480428398845952"); list.add("002212024012002045910594480613421867008"); list.add("002212024012002105810594482118929850368"); list.add("002212024012002142110594482973022318592"); list.add("002212024012002214310594484827476844544"); list.add("002212024012002255810594485893556273152"); list.add("002212024012002304210594487085498306560"); list.add("002212024012002324210594487592020692992"); list.add("002212024012002363210594488553206095872"); list.add("002212024012002415310594489901268164608"); list.add("002212024012002504710594492141533519872"); list.add("002212024012002553810594493361874657280"); list.add("002212024012002595210594494425807618048"); list.add("002212024012003100510594496995910184960"); list.add("002212024012003103110594497108682436608"); list.add("002212024012003152310594498332509163520"); list.add("002212024012003171410594498795241598976"); list.add("002212024012003241310594500553560780800"); list.add("002212024012003291310594501812464513024"); list.add("002212024012003342310594503112804630528"); list.add("002212024012003431210594505332801568768"); list.add("002212024012003472110594506374581182464"); list.add("002212024012003494010594506960009003008"); list.add("002212024012004060010594511068331446272"); list.add("002212024012004201410594514651277361152"); list.add("002212024012004203110594514721114386432"); list.add("002212024012004203410594514736872542208"); list.add("002212024012004344810594518316503179264"); list.add("002212024012005202710594529804072976384"); list.add("002212024012005205110594529907513917440"); list.add("002212024012006150710594543562662146048"); list.add("002212024012006205010594544999654088704"); list.add("002212024012006241010594545839114125312"); list.add("002212024012006361410594548878687465472"); list.add("002212024012006465810594551577338093568"); list.add("002212024012006575010594554314173935616"); list.add("002212024012007115110594557840027676672"); list.add("002212024012007362410594564018489118720"); list.add("002212024012007482910594567058493366272"); list.add("002212024012008230410594575763048857600"); list.add("002212024012008253310594576387036323840"); list.add("002212024012008280610594577028788113408"); list.add("002212024012008382610594579629386616832"); list.add("002212024012008521210594583093279629312"); list.add("002212024012008541210594583596443234304"); list.add("002212024012009092310594587416953556992"); list.add("002212024012009195010594590048270327808"); list.add("002212024012009453410594596524758863872"); list.add("002212024012009524910594598349020241920"); list.add("002212024012009570610594599428485402624"); list.add("002212024012009593710594600060787294208"); list.add("002212024012010265710594606940853993472"); list.add("002212024012010341410594608771372904448"); list.add("002212024012010460110594611737253269504"); list.add("002212024012011113310594618161235431424"); list.add("002212024012011173110594619665071075328"); list.add("002212024012011251910594621628888317952"); list.add("002212024012011334810594623761286230016"); list.add("002212024012011345710594624049729130496"); list.add("002212024012011422010594625910911991808"); list.add("002212024012011442710594626441478758400"); list.add("002212024012011520010594628341198606336"); list.add("002212024012012010610594630632848642048"); list.add("002212024012012042110594631450333192192"); list.add("002212024012012103310594633012677017600"); list.add("002212024012012210610594635664589496320"); list.add("002212024012012225010594636101413961728"); list.add("002212024012012245010594636606376472576"); list.add("002212024012012271710594637223305248768"); list.add("002212024012012395810594640414523641856"); list.add("002212024012012435410594641403792183296"); list.add("002212024012012481210594642486760472576"); list.add("002212024012012512010594643273237594112"); list.add("002212024012012531910594643772930195456"); list.add("002212024012012580610594644977297215488"); list.add("002212024012012591910594645284638912512"); list.add("002212024012012593310594645342717562880"); list.add("002212024012013024210594646135406653440"); list.add("002212024012013052910594646837095161856"); list.add("002212024012013071310594647270205575168"); list.add("002212024012013153710594649384633298944"); list.add("002212024012013153810594649389604360192"); list.add("002212024012013230210594651250933538816"); list.add("002212024012013232010594651327277400064"); list.add("002212024012013310010594653256085786624"); list.add("002212024012013320710594653539290415104"); list.add("002212024012013332010594653842118103040"); list.add("002212024012013335510594653991580667904"); list.add("002212024012013385410594655242723958784"); list.add("002212024012013395310594655492243103744"); list.add("002212024012013455610594657015057289216"); list.add("002212024012013494410594657971020353536"); list.add("002212024012013500110594658040879837184"); list.add("002212024012013553410594659440950935552"); list.add("002212024012013565210594659765387722752"); list.add("002212024012013593110594660433722568704"); list.add("002212024012014012110594660895905665024"); list.add("002212024012014053010594661940708368384"); list.add("002212024012014101010594663113931292672"); list.add("002212024012014114710594663520715759616"); list.add("002212024012014145010594664287951552512"); list.add("002212024012014204910594665794481618944"); list.add("002212024012014251210594666896448901120"); list.add("002212024012014253810594667005266984960"); list.add("002212024012014295910594668099194966016"); list.add("002212024012014351710594669433348386816"); list.add("002212024012014364610594669805400092672"); list.add("002212024012014441910594671709376053248"); list.add("002212024012014515110594673603900043264"); list.add("002212024012014515210594673608845291520"); list.add("002212024012014520810594673674945388544"); list.add("002212024012014572910594675020406628352"); list.add("002212024012015020310594676168060166144"); list.add("002212024012015030810594676441920471040"); list.add("002212024012015033410594676553010806784"); list.add("002212024012015075210594677635859435520"); list.add("002212024012015093810594678078134222848"); list.add("002212024012015115710594678663576350720"); list.add("002212024012015204710594680886109294592"); list.add("002212024012015253810594682103424442368"); list.add("002212024012015291310594683007772807168"); list.add("002212024012015324910594683911054159872"); list.add("002212024012015392510594685573168590848"); list.add("002212024012015443710594686883522838528"); list.add("002212024012016070010594692517039341568"); list.add("002212024012016112510594693627993804800"); list.add("002212024012016203710594695941867896832"); list.add("002212024012016345210594699527469228032"); list.add("002212024012016423810594701480931721216"); list.add("002212024012016423910594701485998989312"); list.add("002212024012016520410594703855158415360"); list.add("002212024012016554110594704766491590656"); list.add("002212024012016591110594705647002603520"); list.add("002212024012017061210594707415444922368"); list.add("002212024012017171510594710195644825600"); list.add("002212024012017341610594714474823458816"); list.add("002212024012017363710594715068012752896"); list.add("002212024012017440210594716933574975488"); list.add("002212024012017463310594717567454904320"); list.add("002212024012017491010594718227477712896"); list.add("002212024012018043210594722093682356224"); list.add("002212024012018080810594722999898148864"); list.add("002212024012018092210594723311481901056"); list.add("002212024012019024710594736750967255040"); list.add("002212024012019074410594737999546507264"); list.add("002212024012019240910594742130510098432"); list.add("002212024012019273110594742975480664064"); list.add("002212024012019302610594743712373104640"); list.add("002212024012019310710594743881852981248"); list.add("002212024012019350710594744888902512640"); list.add("002212024012019370410594745379938226176"); list.add("002212024012019384710594745810470105088"); list.add("002212024012019405310594746342218489856"); list.add("002212024012019415310594746594158383104"); list.add("002212024012019473810594748039715192832"); list.add("002212024012019580410594750666120065024"); list.add("002212024012020012010594751487911780352"); list.add("002212024012020171210594755479046082560"); list.add("002212024012020183810594755841587875840"); list.add("002212024012020184810594755882695720960"); list.add("002212024012020205310594756408119779328"); list.add("002212024012020325510594759436355129344"); list.add("002212024012020441110594762270292959232"); list.add("002212024012020574310594765678465142784"); list.add("002212024012021023210594766890241748992"); list.add("002212024012021065110594767975337512960"); list.add("002212024012021093010594768640217612288"); list.add("002212024012021245710594772531239391232"); list.add("002212024012021330510594774577238994944"); list.add("002212024012021332810594774674216681472"); list.add("002212024012021470410594778097493340160"); list.add("002212024012021560910594780380631048192"); list.add("002212024012022002410594781450893905920"); list.add("002212024012022052510594782714643472384"); list.add("002212024012022102310594783963042697216"); list.add("002212024012022113210594784251634716672"); list.add("002212024012022135010594784832614264832"); list.add("002212024012022261510594787957365215232"); list.add("002212024012022265310594788117926838272"); list.add("002212024012022280310594788411345596416"); list.add("002212024012022283910594788562229354496"); list.add("002212024012022303410594789042121768960"); list.add("002212024012022305110594789114751111168"); list.add("002212024012022310510594789174819856384"); list.add("002212024012022321810594789479252979712"); list.add("002212024012022332510594789759262851072"); list.add("002212024012022334010594789823122919424"); list.add("002212024012022340710594789935919562752"); list.add("002212024012022341010594789947188355072"); list.add("002212024012022352810594790275338932224"); list.add("002212024012022361410594790470792970240"); list.add("002212024012022371410594790720687427584"); list.add("002212024012022391610594791232512024576"); list.add("002212024012022404210594791594485936128"); list.add("002212024012022422710594792031962103808"); list.add("002212024012022461310594792980209168384"); list.add("002212024012022465310594793149695463424"); list.add("002212024012022584010594796116432998400"); list.add("002212024012023015610594796938510295040"); list.add("002212024012023020910594796989178769408"); list.add("002212024012023032710594797316690350080"); list.add("002212024012023074710594798408076976128"); list.add("002212024012023080710594798492065845248"); list.add("002212024012023144810594800174847664128"); list.add("002212024012023163010594800602945810432"); list.add("002212024012023202610594801592686174208"); list.add("002212024012023233010594802364473561088"); list.add("002212024012023280010594803497072263168"); list.add("002212024012023293510594803895683928064"); list.add("002212024012023303210594804134859919360"); list.add("002212024012023321110594804549941022720"); list.add("002212024012023365110594805722156756992"); list.add("002212024012023391810594806340189331456"); list.add("002212024012023392010594806350633963520"); list.add("002212024012023412910594806890712391680"); list.add("002212024012023444210594807699142967296"); list.add("002212024012023505710594809273943674880"); list.add("002212024012023512810594809402321960960"); list.add("002212024012023541810594810116667469824"); list.add("002212024012023593910594811459480784896"); list.add("002212024012100022110594812139787378688"); list.add("002212024012100040110594812561252016128"); list.add("002212024012100055210594813027738804224"); list.add("002212024012100133510594814968853815296"); list.add("002212024012100145110594815288849301504"); list.add("002212024012100150510594815344055771136"); list.add("002212024012100164110594815747939782656"); list.add("002212024012100184110594816252358750208"); list.add("002212024012100240910594817627562594304"); list.add("002212024012100265110594818304929333248"); list.add("002212024012100265510594818324819726336"); list.add("002212024012100323910594819766950621184"); list.add("002212024012100325810594819848056565760"); list.add("002212024012100422010594822204490186752"); list.add("002212024012100432310594822468720619520"); list.add("002212024012100470510594823397177991168"); list.add("002212024012100533310594825025135636480"); list.add("002212024012101081010594828705940230144"); list.add("002212024012101120110594829672527552512"); list.add("002212024012101130710594829948177211392"); list.add("002212024012101171210594830976075292672"); list.add("002212024012101195910594831678907023360"); list.add("002212024012101284910594833902074712064"); list.add("002212024012101292810594834063239839744"); list.add("002212024012101354910594835663919448064"); list.add("002212024012101382410594836313726083072"); list.add("002212024012101385110594836426734497792"); list.add("002212024012101395810594836707094200320"); list.add("002212024012101405410594836940690751488"); list.add("002212024012101573110594841121707089920"); list.add("002212024012102021410594842311298744320"); list.add("002212024012102022010594842334529736704"); list.add("002212024012102033710594842659609268224"); list.add("002212024012102035710594842742145011712"); list.add("002212024012102071110594843557768364032"); list.add("002212024012102071410594843567142146048"); list.add("002212024012102081010594843802404323328"); list.add("002212024012102092710594844128728965120"); list.add("002212024012102125010594844979785224192"); list.add("002212024012102135510594845252278149120"); list.add("002212024012102155210594845743196758016"); list.add("002212024012102265710594848532009967616"); list.add("002212024012102322410594849902228631552"); list.add("002212024012102334010594850219938926592"); list.add("002212024012102384010594851481522499584"); list.add("002212024012102442810594852937281531904"); list.add("002212024012102591010594856638749282304"); list.add("002212024012103121910594859947595255808"); list.add("002212024012103152210594860715487588352"); list.add("002212024012103390010594866664814051328"); list.add("002212024012103441410594867978017239040"); list.add("002212024012103475210594868895555637248"); list.add("002212024012103522010594870020035801088"); list.add("002212024012104252610594878349321895936"); list.add("002212024012104424410594882700406575104"); list.add("002212024012104444710594883218347331584"); list.add("002212024012104454110594883443373002752"); list.add("002212024012105052610594888412633616384"); list.add("002212024012105085910594889305842081792"); list.add("002212024012105160710594891101192937472"); list.add("002212024012105525010594900343509393408"); list.add("002212024012105574010594901558414712832"); list.add("002212024012106361310594911262215991296"); list.add("002212024012106460110594913725917790208"); list.add("002212024012107113210594920146825728000"); list.add("002212024012107513610594930230778335232"); list.add("002212024012108185110594937090230648832"); list.add("002212024012108300110594939899485220864"); list.add("002212024012108375910594941906282672128"); list.add("002212024012108414410594942848085127168"); list.add("002212024012108540910594945971711025152"); list.add("002212024012109375410594956984284811264"); list.add("002212024012109381910594957087831085056"); list.add("002212024012109531810594960859504275456"); list.add("002212024012109551310594961342371061760"); list.add("002212024012110130010594965816926183424"); list.add("002212024012110282210594969684529762304"); list.add("002212024012110320810594970630600163328"); list.add("002212024012110383810594972268128718848"); list.add("002212024012110405810594972852495970304"); list.add("002212024012110412410594972962087927808"); list.add("002212024012111082110594979746528714752"); list.add("002212024012111200610594982701064683520"); list.add("002212024012111294610594985135867318272"); list.add("002212024012111364110594986875383599104"); list.add("002212024012111590510594992511668342784"); list.add("002212024012112045410594993974632574976"); list.add("002212024012112100910594995298402926592"); list.add("002212024012112105310594995482561171456"); list.add("002212024012112153710594996673427963904"); list.add("002212024012112160710594996800931385344"); list.add("002212024012112195910594997773277167616"); list.add("002212024012112241310594998838727712768"); list.add("002212024012112242510594998887411814400"); list.add("002212024012112262310594999382978678784"); list.add("002212024012112272110594999624640921600"); list.add("002212024012112273910594999701382799360"); list.add("002212024012112295010595000253080576000"); list.add("002212024012112312510595000649553506304"); list.add("002212024012112352510595001657994137600"); list.add("002212024012112371710595002127284527104"); list.add("002212024012112402610595002918322995200"); list.add("002212024012112455110595004280173592576"); list.add("002212024012112462910595004442896957440"); list.add("002212024012112512810595005697113083904"); list.add("002212024012113003010595007967551979520"); list.add("002212024012113114210595010788220932096"); list.add("002212024012113115710595010849897357312"); list.add("002212024012113135410595011342459330560"); list.add("002212024012113180210595012380865269760"); list.add("002212024012113225710595013618731708416"); list.add("002212024012113230010595013629276024832"); list.add("002212024012113242710595013995730501632"); list.add("002212024012113290910595015177328852992"); list.add("002212024012113355810595016894889979904"); list.add("002212024012113363210595017034905804800"); list.add("002212024012113422510595018517363355648"); list.add("002212024012113424810595018615403438080"); list.add("002212024012113484910595020129081614336"); list.add("002212024012113510410595020695670784000"); list.add("002212024012113530210595021187432116224"); list.add("002212024012113542210595021526092644352"); list.add("002212024012113572610595022295375106048"); list.add("002212024012114005610595023178321424384"); list.add("002212024012114015810595023438753501184"); list.add("002212024012114020110595023450675204096"); list.add("002212024012114054210595024376724029440"); list.add("002212024012114123210595026094818979840"); list.add("002212024012114130410595026229875568640"); list.add("002212024012114165910595027214747627520"); list.add("002212024012114172810595027336811106304"); list.add("002212024012114192910595027844826783744"); list.add("002212024012114212910595028348856606720"); list.add("002212024012114245310595029204924747776"); list.add("002212024012114273410595029878496423936"); list.add("002212024012114285610595030225930584064"); list.add("002212024012114313110595030874845970432"); list.add("002212024012114321010595031036483010560"); list.add("002212024012114391410595032816354676736"); list.add("002212024012114452810595034385437024256"); list.add("002212024012114510210595035787030265856"); list.add("002212024012114521310595036083495227392"); list.add("002212024012114531110595036325790777344"); list.add("002212024012114570610595037313452412928"); list.add("002212024012114574410595037473014644736"); list.add("002212024012115004310595038223877074944"); list.add("002212024012115035110595039012131823616"); list.add("002212024012115053810595039458684366848"); list.add("002212024012115054810595039499924635648"); list.add("002212024012115091710595040379003555840"); list.add("002212024012115122610595041169389326336"); list.add("002212024012115150110595041822166896640"); list.add("002212024012115175410595042548649095168"); list.add("002212024012115181310595042625946537984"); list.add("002212024012115283010595045212408975360"); list.add("002212024012115311410595045902363594752"); list.add("002212024012115323610595046246841253888"); list.add("002212024012115340310595046610915758080"); list.add("002212024012115364110595047274053259264"); list.add("002212024012115383810595047762461921280"); list.add("002212024012115393610595048006020960256"); list.add("002212024012115432510595048969516838912"); list.add("002212024012115523510595051276765876224"); list.add("002212024012116014110595053563529744384"); list.add("002212024012116042110595054235981336576"); list.add("002212024012116234610595059122240835584"); list.add("002212024012116401910595063286572142593"); list.add("002212024012116410310595063470078394368"); list.add("002212024012116455010595064674858663936"); list.add("002212024012116475710595065210543628288"); list.add("002212024012116510110595065980921802752"); list.add("002212024012116541310595066786404331520"); list.add("002212024012116560610595067258829762560"); list.add("002212024012117022210595068836914335744"); list.add("002212024012117074310595070182939291648"); list.add("002212024012117140310595071777141776384"); list.add("002212024012117295510595075768928636928"); list.add("002212024012117342310595076892806238208"); list.add("002212024012117362210595077392572440576"); list.add("002212024012117381910595077883821416449"); list.add("002212024012117464010595079987069513728"); list.add("002212024012117545410595082057375645696"); list.add("002212024012118102110595085946217422848"); list.add("002212024012118512510595096278832414720"); list.add("002212024012119014710595098888321228800"); list.add("002212024012119021510595099007097991168"); list.add("002212024012119130810595101743295881216"); list.add("002212024012119152810595102330990301184"); list.add("002212024012119181810595103046938480640"); list.add("002212024012119224710595104175111888896"); list.add("002212024012119240910595104519257686016"); list.add("002212024012119244310595104659019026432"); list.add("002212024012119394910595108462120529920"); list.add("002212024012119470910595110306265292800"); list.add("002212024012119565110595112748661231616"); list.add("002212024012120050610595114824932089856"); list.add("002212024012120101810595116132469895168"); list.add("002212024012120223510595119220911931392"); list.add("002212024012120301710595121162164723712"); list.add("002212024012120341310595122151592648704"); list.add("002212024012120412910595123979896049664"); list.add("002212024012120545810595127374289764352"); list.add("002212024012121002910595128760811089920"); list.add("002212024012121060710595130176476893184"); list.add("002212024012121112010595131490208403456"); list.add("002212024012121173910595133079694307328"); list.add("002212024012121190010595133422182244352"); list.add("002212024012121245010595134887552577536"); list.add("002212024012121394910595138661061165056"); list.add("002212024012121395410595138680985972736"); list.add("002212024012121412510595139061743026176"); list.add("002212024012121462510595140321042722816"); list.add("002212024012121485110595140931395379200"); list.add("002212024012121485310595140942254923776"); list.add("002212024012121490910595141008896118784"); list.add("002212024012121550910595142520059920384"); list.add("002212024012121553710595142633446559744"); list.add("002212024012121562010595142816567255040"); list.add("002212024012122020510595144263915098112"); list.add("002212024012122025110595144453705261056"); list.add("002212024012122032710595144608010633216"); list.add("002212024012122032810595144609667383296"); list.add("002212024012122042710595144858533064704"); list.add("002212024012122073110595145630226444288"); list.add("002212024012122074610595145693556240384"); list.add("002212024012122094310595146182320365568"); list.add("002212024012122181710595148341437124608"); list.add("002212024012122183410595148411735236608"); list.add("002212024012122211010595149065657081856"); list.add("002212024012122324510595151981691371520"); list.add("002212024012122330110595152048244715520"); list.add("002212024012122335110595152256915374080"); list.add("002212024012122352210595152639939215360"); list.add("002212024012122394210595153728147193856"); list.add("002212024012122474010595155735880826880"); list.add("002212024012122545410595157556317974528"); list.add("002212024012122571710595158152478920704"); list.add("002212024012123010810595159121267937280"); list.add("002212024012123034710595159790076133376"); list.add("002212024012123041110595159888859320320"); list.add("002212024012123072610595160707222360064"); list.add("002212024012123090010595161102049046528"); list.add("002212024012123132910595162230260146176"); list.add("002212024012123144610595162552697266176"); list.add("002212024012123170410595163133509169152"); list.add("002212024012123185810595163609204981760"); list.add("002212024012123191610595163687250415616"); list.add("002212024012123212010595164207735209984"); list.add("002212024012123241510595164938678730752"); list.add("002212024012123313710595166795615555584"); list.add("002212024012123342110595167481752354816"); list.add("002212024012123344310595167574933983232"); list.add("002212024012123380010595168401460944896"); list.add("002212024012123422110595169496445112320"); list.add("002212024012123434110595169830338682880"); list.add("002212024012123470010595170666823086080"); list.add("002212024012123495310595171390970482688"); list.add("002212024012123543310595172565041119232"); list.add("002212024012123580310595173448065908736"); list.add("002212024012123583310595173571684630528"); list.add("002212024012200025410595174667204128768"); list.add("002212024012200213610595179371893743616"); list.add("002212024012200323610595182141330251776"); list.add("002212024012200333010595182370100281344"); list.add("002212024012200394310595183932839124992"); list.add("002212024012200412010595184341481881600"); list.add("002212024012200461410595185570942451712"); list.add("002212024012200475210595185981813051392"); list.add("002212024012200540310595187539770691584"); list.add("002212024012201021210595189589284847616"); list.add("002212024012201024510595189727303655424"); list.add("002212024012201032710595189905873850368"); list.add("002212024012201112010595191888326025216"); list.add("002212024012201130710595192336510152704"); list.add("002212024012201164410595193247826378752"); list.add("002212024012201211810595194396701298688"); list.add("002212024012201224810595194772749197312"); list.add("002212024012201282610595196192173154304"); list.add("002212024012201285610595196318686580736"); list.add("002212024012201300010595196586730840064"); list.add("002212024012201324310595197268408528896"); list.add("002212024012201390710595198880019509248"); list.add("002212024012201402410595199202641137664"); list.add("002212024012201421010595199646865678336"); list.add("002212024012201441810595200183795621888"); list.add("002212024012201541310595202681872441344"); list.add("002212024012202054010595205564480294912"); list.add("002212024012202061810595205721641353216"); list.add("002212024012202080310595206162449633280"); list.add("002212024012202092210595206493570420736"); list.add("002212024012202152410595208011397824512"); list.add("002212024012202193710595209073440673792"); list.add("002212024012202224710595209869975941120"); list.add("002212024012202291810595211511798493184"); list.add("002212024012202302410595211785708204032"); list.add("002212024012202442910595215332432760832"); list.add("002212024012203064210595220920688562176"); list.add("002212024012203145010595222968272244736"); list.add("002212024012203150610595223035649421312"); list.add("002212024012203164810595223462075846656"); list.add("002212024012203170610595223539475636224"); list.add("002212024012203205010595224478414426112"); list.add("002212024012203221510595224834196459520"); list.add("002212024012203305610595227021528731648"); list.add("002212024012203385910595229048557662208"); list.add("002212024012203400110595229304766681088"); list.add("002212024012203480110595231320666427392"); list.add("002212024012203515210595232288837693440"); list.add("002212024012203593710595234240251396096"); list.add("002212024012204033110595235222445006848"); list.add("002212024012204070710595236126145552384"); list.add("002212024012204083410595236491958243328"); list.add("002212024012204100010595236850456530944"); list.add("002212024012204180910595238905065705472"); list.add("002212024012204202610595239476291526656"); list.add("002212024012204324610595242582430126080"); list.add("002212024012204512610595247280226238464"); list.add("002212024012205013310595249823959384064"); list.add("002212024012205144410595253143235948544"); list.add("002212024012205512210595262362592964608"); list.add("002212024012205573610595263932532199424"); list.add("002212024012206003610595264683673812992"); list.add("002212024012206225210595270288617103360"); list.add("002212024012207423510595290349826646016"); list.add("002212024012208084110595296917749334016"); list.add("002212024012208384910595304500785704960"); list.add("002212024012208490310595307077856043008"); list.add("002212024012209074910595311800226250752"); list.add("002212024012209174110595314285110263808"); list.add("002212024012209191510595314675905662976"); list.add("002212024012209294010595317299229552640"); list.add("002212024012209360010595318894607114240"); list.add("002212024012209460410595321427567960064"); list.add("002212024012209533010595323296660488192"); list.add("002212024012210095010595327407561764864"); list.add("002212024012210213610595330366229880832"); list.add("002212024012210282510595332082242744320"); list.add("002212024012210284710595332175404302336"); list.add("002212024012210442610595336112764055552"); list.add("002212024012210490210595337270834405376"); list.add("002212024012210550410595338788519604224"); list.add("002212024012211003810595340191122448384"); list.add("002212024012211140510595343574442606592"); list.add("002212024012211163910595344221314306048"); list.add("002212024012211413310595350486774050816"); list.add("002212024012211441010595351147147812864"); list.add("002212024012211490510595352382937698304"); list.add("002212024012211502810595352733519085568"); list.add("002212024012211545110595353835267125248"); list.add("002212024012211571310595354429396811776"); list.add("002212024012212011410595355441710649344"); list.add("002212024012212032810595356002119221248"); list.add("002212024012212071310595356946645819392"); list.add("002212024012212093210595357529777012736"); list.add("002212024012212132710595358515703697408"); list.add("002212024012212133010595358527221026816"); list.add("002212024012212145810595358899561975808"); list.add("002212024012212182310595359759333785600"); list.add("002212024012212195910595360160940421120"); list.add("002212024012212223710595360821542289408"); list.add("002212024012212280010595362176943087616"); list.add("002212024012212331510595363497014087680"); list.add("002212024012212332010595363520214040576"); list.add("002212024012212364410595364374573342720"); list.add("002212024012212392610595365053549891584"); list.add("002212024012212420210595365708551356416"); list.add("002212024012212515010595368176783806464"); list.add("002212024012212545410595368945522139136"); list.add("002212024012212563810595369385110470656"); list.add("002212024012212595510595370207916490752"); list.add("002212024012213001910595370308704493568"); list.add("002212024012213045010595371445531803648"); list.add("002212024012213050910595371526668582912"); list.add("002212024012213080110595372247414558720"); list.add("002212024012213103110595372879196917760"); list.add("002212024012213123510595373397762211840"); list.add("002212024012213124410595373434470760448"); list.add("002212024012213213610595375667194064896"); list.add("002212024012213215310595375739543347200"); list.add("002212024012213265310595376996419260416"); list.add("002212024012213301810595377855347728384"); list.add("002212024012213344010595378955238993920"); list.add("002212024012213361110595379334821642240"); list.add("002212024012213370310595379552948408320"); list.add("002212024012213370610595379567860219904"); list.add("002212024012213394610595380238816317440"); list.add("002212024012213411910595380627399110656"); list.add("002212024012213415510595380779316637696"); list.add("002212024012213462510595381912858877952"); list.add("002212024012213504010595382980867723264"); list.add("002212024012213515710595383303063072768"); list.add("002212024012213541710595383890711797760"); list.add("002212024012213580410595384843773497344"); list.add("002212024012214085610595387578410983424"); list.add("002212024012214094110595387768931315712"); list.add("002212024012214105410595388075132284928"); list.add("002212024012214132210595388693142171648"); list.add("002212024012214180110595389863342465024"); list.add("002212024012214231810595391195878322176"); list.add("002212024012214270510595392146673364992"); list.add("002212024012214274410595392311675785216"); list.add("002212024012214315910595393379368296448"); list.add("002212024012214352110595394228169596928"); list.add("002212024012214372910595394764033875968"); list.add("002212024012214413010595395773510025216"); list.add("002212024012214440310595396417831763968"); list.add("002212024012214441010595396444547149824"); list.add("002212024012214533910595398832112914432"); list.add("002212024012215005410595400654814597120"); list.add("002212024012215010010595400680562814976"); list.add("002212024012215033010595401309810950144"); list.add("002212024012215040310595401447122890752"); list.add("002212024012215085310595402667338199040"); list.add("002212024012215160610595404480555941888"); list.add("002212024012215185210595405179273465856"); list.add("002212024012215190610595405236439703552"); list.add("002212024012215194110595405382984491008"); list.add("002212024012215213510595405859824463872"); list.add("002212024012215250010595406722130571264"); list.add("002212024012215271010595407267583643648"); list.add("002212024012215331410595408793838641152"); list.add("002212024012215355510595409466669039616"); list.add("002212024012215400410595410514260389888"); list.add("002212024012215462410595412106063241217"); list.add("002212024012215465010595412214380593152"); list.add("002212024012215494010595412926899310592"); list.add("002212024012215511410595413321401065472"); list.add("002212024012216024510595416219779657728"); list.add("002212024012216090510595417815371309056"); list.add("002212024012216152210595419395002855424"); list.add("002212024012216303910595423242619289600"); list.add("002212024012216323510595423730109599744"); list.add("002212024012216462110595427192589164544"); list.add("002212024012216512810595428479806590976"); list.add("002212024012217133810595434059760828416"); list.add("002212024012217140110595434157348577280"); list.add("002212024012217265210595437391108599808"); list.add("002212024012217373310595440078580711424"); list.add("002212024012217401810595440769727373312"); list.add("002212024012218025310595446452980219904"); list.add("002212024012218025710595446472613158912"); list.add("002212024012218062210595447332103933952"); list.add("002212024012218153410595449647384133632"); list.add("002212024012218204610595450954739814400"); list.add("002212024012218212110595451102025318400"); list.add("002212024012218213010595451139451953152"); list.add("002212024012218333910595454198277308416"); list.add("002212024012218353910595454701597982721"); list.add("002212024012218481810595457884660523008"); list.add("002212024012218495710595458297334534144"); list.add("002212024012218520410595458831311863808"); list.add("002212024012219012110595461168265654272"); list.add("002212024012219050610595462109702279168"); list.add("002212024012219194110595465779372269568"); list.add("002212024012219201110595465908762533888"); list.add("002212024012219273110595467754176421888"); list.add("002212024012219283010595468001912987648"); list.add("002212024012219294710595468322303574016"); list.add("002212024012219352610595469744096534528"); list.add("002212024012219365410595470113533415424"); list.add("002212024012219390510595470664100651008"); list.add("002212024012219433610595471799256776704"); list.add("002212024012219490110595473162892890112"); list.add("002212024012220022110595476517661044736"); list.add("002212024012220204310595481138892726272"); list.add("002212024012220290910595483263521120256"); list.add("002212024012220380610595485513547710464"); list.add("002212024012220414910595486450121043968"); list.add("002212024012220440310595487011411030016"); list.add("002212024012220442910595487123891904512"); list.add("002212024012220452210595487343670521856"); list.add("002212024012220464610595487694755426304"); list.add("002212024012220465710595487743579455488"); list.add("002212024012221093610595493441002401792"); list.add("002212024012221100010595493542824345600"); list.add("002212024012221124710595494243620212736"); list.add("002212024012221130210595494306390147072"); list.add("002212024012221142410595494650877739008"); list.add("002212024012221162110595495139865174016"); list.add("002212024012221163410595495195483959296"); list.add("002212024012221203110595496188132257792"); list.add("002212024012221214110595496482288037888"); list.add("002212024012221264310595497750136557568"); list.add("002212024012221295410595498553067823104"); list.add("002212024012221330310595499344510283776"); list.add("002212024012221350810595499867519176704"); list.add("002212024012221355010595500044163866624"); list.add("002212024012221385610595500824719646720"); list.add("002212024012221422710595501708908781568"); list.add("002212024012221451210595502402193186816"); list.add("002212024012221472510595502960037392384"); list.add("002212024012221500610595503635456974848"); list.add("002212024012221564410595505302363852800"); list.add("002212024012221572710595505485452836864"); list.add("002212024012221585210595505841709477888"); list.add("002212024012222014110595506551556345856"); list.add("002212024012222061810595507711337418752"); list.add("002212024012222094310595508572880785408"); list.add("002212024012222120610595509171640770560"); list.add("002212024012222210110595511413620043776"); list.add("002212024012222240610595512191852105728"); list.add("002212024012222244310595512347178991616"); list.add("002212024012222253810595512575702224896"); list.add("002212024012222282610595513281997238272"); list.add("002212024012222291610595513491272724480"); list.add("002212024012222310610595513954440638464"); list.add("002212024012222321510595514243849486336"); list.add("002212024012222383810595515847590932480"); list.add("002212024012222431210595516997064097792"); list.add("002212024012222435810595517191536074752"); list.add("002212024012222461010595517744129331200"); list.add("002212024012222492610595518566014971904"); list.add("002212024012222504010595518876766601216"); list.add("002212024012222543410595519860298108928"); list.add("002212024012222562210595520310812569600"); list.add("002212024012222572510595520574540152832"); list.add("002212024012223015210595521696450539520"); list.add("002212024012223084910595523445885067264"); list.add("002212024012223133110595524627909177344"); list.add("002212024012223163310595525392503496704"); list.add("002212024012223171310595525559929499648"); list.add("002212024012223192710595526121941069824"); list.add("002212024012223200910595526298598498304"); list.add("002212024012223291810595528598469050368"); list.add("002212024012223323610595529427975524352"); list.add("002212024012223410710595531574846648320"); list.add("002212024012223474310595533232983072768"); list.add("002212024012223523810595534472454250496"); list.add("002212024012223570310595535582334377984"); list.add("002212024012223573210595535705579913216"); list.add("002212024012223595110595536288666714112"); list.add("002212024012300052010595537668090273792"); list.add("002212024012300065610595538070481522688"); list.add("002212024012300105910595539089918849024"); list.add("002212024012300134110595539769455628288"); list.add("002212024012300140810595539880418148352"); list.add("002212024012300142910595539971285536768"); list.add("002212024012300213510595541757139517440"); list.add("002212024012300275010595543331050971136"); list.add("002212024012300365210595545605124190208"); list.add("002212024012300385810595546130255245312"); list.add("002212024012300485810595548648522293248"); list.add("002212024012300545510595550144246960128"); list.add("002212024012300560810595550451299373056"); list.add("002212024012300584610595551113331666944"); list.add("002212024012300592710595551284858343424"); list.add("002212024012301004310595551605440966656"); list.add("002212024012301015710595551916002836480"); list.add("002212024012301082910595553561560346624"); list.add("002212024012301084210595553615234002944"); list.add("002212024012301184710595556152000081920"); list.add("002212024012301185510595556183660912640"); list.add("002212024012301213610595556862446100480"); list.add("002212024012301251910595557796119248896"); list.add("002212024012301302810595559091397685248"); list.add("002212024012301483410595563647362072576"); list.add("002212024012301503110595564139283644416"); list.add("002212024012301525010595564721340796928"); list.add("002212024012301534010595564929746370560"); list.add("002212024012301574610595565962368241664"); list.add("002212024012302023610595567180297621504"); list.add("002212024012302052010595567866869047296"); list.add("002212024012302060010595568034274570240"); list.add("002212024012302121810595569621693988864"); list.add("002212024012302211310595571862732734464"); list.add("002212024012302333410595574970581688320"); list.add("002212024012302362110595575671672471552"); list.add("002212024012302384510595576275124781056"); list.add("002212024012302443310595577734577872896"); list.add("002212024012302443310595577735330779136"); list.add("002212024012302483310595578741451030528"); list.add("002212024012302530110595579867357413376"); list.add("002212024012302552110595580452989140992"); list.add("002212024012302585910595581367719677952"); list.add("002212024012303030410595582397716799488"); list.add("002212024012303132610595585003572842496"); list.add("002212024012303150810595585432783585280"); list.add("002212024012303163710595585806216024064"); list.add("002212024012303215410595587136789274624"); list.add("002212024012303302810595589292007530496"); list.add("002212024012303322010595589761636175872"); list.add("002212024012303325210595589895291232256"); list.add("002212024012303423310595592332856647680"); list.add("002212024012303432610595592555911348224"); list.add("002212024012303440610595592723562876928"); list.add("002212024012303452710595593060736655360"); list.add("002212024012303532210595595053430796288"); list.add("002212024012303571610595596036843929600"); list.add("002212024012304143010595600370808741888"); list.add("002212024012304170810595601034847391744"); list.add("002212024012304185810595601497923719168"); list.add("002212024012304222210595602351168049152"); list.add("002212024012304232810595602627405139968"); list.add("002212024012304454410595608233924485120"); list.add("002212024012304482310595608901045624832"); list.add("002212024012304544610595610505073483776"); list.add("002212024012304583910595611482153197568"); list.add("002212024012305025410595612551519502336"); list.add("002212024012305152010595615682331496448"); list.add("002212024012305364610595621077334511616"); list.add("002212024012305464110595623572415012864"); list.add("002212024012305521610595624975469703168"); list.add("002212024012306100610595629463149334528"); list.add("002212024012306132910595630317067694080"); list.add("002212024012307251810595648390382186496"); list.add("002212024012308182210595661743406149632"); list.add("002212024012308493210595669588677951488"); list.add("002212024012309062810595673846948134912"); list.add("002212024012309202910595677376082518016"); list.add("002212024012309274310595679196869947392"); list.add("002212024012309291810595679593844035584"); list.add("002212024012309392410595682137295147008"); list.add("002212024012309524010595685475675918336"); list.add("002212024012310064110595689004127346688"); list.add("002212024012310144110595691014058795008"); list.add("002212024012310193010595692229128003584"); list.add("002212024012310380110595696888347742208"); list.add("002212024012310432410595698241543426048"); list.add("002212024012311053510595703823514669056"); list.add("002212024012311245610595708694451650560"); list.add("002212024012311315210595710439904735232"); list.add("002212024012311383110595712112592482304"); list.add("002212024012311490510595714772350468096"); list.add("002212024012311511010595715295151476736"); list.add("002212024012311544310595716188244660224"); list.add("002212024012311575210595716983442722816"); list.add("002212024012312024910595718226422726656"); list.add("002212024012312143910595721204777025536"); list.add("002212024012312175910595722045032361984"); list.add("002212024012312200610595722577818021888"); list.add("002212024012312215310595723025385979904"); list.add("002212024012312250110595723814212640768"); list.add("002212024012312272810595724429547700224"); list.add("002212024012312292210595724908896313344"); list.add("002212024012312334310595726003935236096"); list.add("002212024012312390010595727335123210240"); list.add("002212024012312392810595727452335333376"); list.add("002212024012312523010595730729607188480"); list.add("002212024012312530710595730885509500928"); list.add("002212024012312570310595731878287183872"); list.add("002212024012313011310595732926178697216"); list.add("002212024012313074010595734547967365120"); list.add("002212024012313195410595737627764256768"); list.add("002212024012313201810595737727450120192"); list.add("002212024012313210210595737912599281664"); list.add("002212024012313235210595738624834818048"); list.add("002212024012313304710595740363811840000"); list.add("002212024012313390810595742466663899136"); list.add("002212024012313421910595743269066240000"); list.add("002212024012313440910595743729209249792"); list.add("002212024012313495810595745194951987200"); list.add("002212024012313563410595746854281760768"); list.add("002212024012313565510595746941793820672"); list.add("002212024012313571810595747040685060096"); list.add("002212024012314011210595748019559104512"); list.add("002212024012314041110595748772247441408"); list.add("002212024012314062410595749329218719744"); list.add("002212024012314084610595749926391336960"); list.add("002212024012314111910595750567244300288"); list.add("002212024012314114110595750657336766464"); list.add("002212024012314150810595751526089682944"); list.add("002212024012314182610595752356621438976"); list.add("002212024012314224410595753437454340096"); list.add("002212024012314255110595754225586532352"); list.add("002212024012314293110595755147040067584"); list.add("002212024012314335710595756262523076608"); list.add("002212024012314342210595756364997165056"); list.add("002212024012314351810595756601546502144"); list.add("002212024012314393910595757696865394688"); list.add("002212024012314403310595757921717837824"); list.add("002212024012314424510595758476037365760"); list.add("002212024012314481710595759868498112512"); list.add("002212024012314505910595760547593678848"); list.add("002212024012314510010595760552406278144"); list.add("002212024012314522010595760889876381696"); list.add("002212024012314552210595761650384404480"); list.add("002212024012315040310595763836794900480"); list.add("002212024012315064910595764531914207232"); list.add("002212024012315092110595765171830542336"); list.add("002212024012315132010595766174780129280"); list.add("002212024012315161410595766901537603584"); list.add("002212024012315174810595767299350560768"); list.add("002212024012315200310595767864378982400"); list.add("002212024012315221810595768427721162752"); list.add("002212024012315292010595770198051381248"); list.add("002212024012315400310595772896417542144"); list.add("002212024012315414310595773316629651456"); list.add("002212024012315431510595773701260402688"); list.add("002212024012315490410595775166425190400"); list.add("002212024012315535610595776391314841600"); list.add("002212024012316000810595777952629030912"); list.add("002212024012316030410595778689090252800"); list.add("002212024012316051010595779217271255040"); list.add("002212024012316054610595779368650739712"); list.add("002212024012316104410595780616733491200"); list.add("002212024012316104810595780636815978496"); list.add("002212024012316295910595785462051176448"); list.add("002212024012316301310595785522788786176"); list.add("002212024012316302010595785549085011968"); list.add("002212024012316345010595786683216261120"); list.add("002212024012316433110595788867042705408"); list.add("002212024012316463810595789651890270208"); list.add("002212024012316491310595790304902479872"); list.add("002212024012316594110595792936277757952"); list.add("002212024012317155810595797034232274944"); list.add("002212024012317251410595799366755852288"); list.add("002212024012317420710595803616864206848"); list.add("002212024012318022310595808717436706816"); list.add("002212024012318114210595811061513711616"); list.add("002212024012318251210595814458935386112"); list.add("002212024012318263410595814801658466304"); list.add("002212024012318295310595815634929287168"); list.add("002212024012318321310595816222202089472"); list.add("002212024012318332910595816541162164224"); list.add("002212024012318533010595821580860846080"); list.add("002212024012318540110595821708316708864"); list.add("002212024012319070310595824987907182592"); list.add("002212024012319135710595826725766787072"); list.add("002212024012319273410595830151636545536"); list.add("002212024012319323110595831398232162304"); list.add("002212024012319334110595831694397952000"); list.add("002212024012319352810595832140214915072"); list.add("002212024012319370510595832549482557440"); list.add("002212024012319375610595832761309659136"); list.add("002212024012319442510595834392763604992"); list.add("002212024012319453610595834689931345920"); list.add("002212024012319491510595835608747147264"); list.add("002212024012319560010595837307293466624"); list.add("002212024012320111610595841151578497025"); list.add("002212024012320121110595841381690417152"); list.add("002212024012320153310595842226880110592"); list.add("002212024012320234510595844291292499968"); list.add("002212024012320314310595846297093894144"); list.add("002212024012320332510595846724557570048"); list.add("002212024012320413810595848794648961024"); list.add("002212024012320414110595848804938711040"); list.add("002212024012320421910595848963638104064"); list.add("002212024012320474710595850339450155008"); list.add("002212024012320502410595850999350812672"); list.add("002212024012320565110595852620036460544"); list.add("002212024012321002310595853509312794624"); list.add("002212024012321013510595853811925245952"); list.add("002212024012321082110595855514467160064"); list.add("002212024012321163810595857602014171136"); list.add("002212024012321253810595859867186855936"); list.add("002212024012321270310595860223395491840"); list.add("002212024012321275210595860427221848064"); list.add("002212024012321300110595860968004059136"); list.add("002212024012321302910595861085467570176"); list.add("002212024012321340710595862002436866048"); list.add("002212024012321342710595862084439597056"); list.add("002212024012321343010595862097548079104"); list.add("002212024012321371310595862780230463488"); list.add("002212024012321411610595863800376623104"); list.add("002212024012321440510595864508840865792"); list.add("002212024012321443410595864629639733248"); list.add("002212024012321464210595865165357031424"); list.add("002212024012321530810595866785551020032"); list.add("002212024012322010410595868783099420672"); list.add("002212024012322041910595869602341572608"); list.add("002212024012322153210595872425304453120"); list.add("002212024012322194710595873494227021824"); list.add("002212024012322200010595873546154377216"); list.add("002212024012322200710595873577543528448"); list.add("002212024012322213510595873947539009536"); list.add("002212024012322221510595874114745782272"); list.add("002212024012322243710595874710796832768"); list.add("002212024012322252510595874912489590784"); list.add("002212024012322274210595875486634020864"); list.add("002212024012322385210595878295954321408"); list.add("002212024012322395210595878546128621568"); list.add("002212024012322414610595879027262455808"); list.add("002212024012322435810595879580448026624"); list.add("002212024012322452910595879961207107584"); list.add("002212024012322492710595880958720638976"); list.add("002212024012322502110595881184813473792"); list.add("002212024012323065310595885345772576768"); list.add("002212024012323071510595885439766618112"); list.add("002212024012323082210595885719943704576"); list.add("002212024012323095810595886121637203968"); list.add("002212024012323102610595886239530504192"); list.add("002212024012323121310595886686215491584"); list.add("002212024012323140210595887144258850816"); list.add("002212024012323184610595888336194068480"); list.add("002212024012323200210595888656592863232"); list.add("002212024012323231210595889453104304128"); list.add("002212024012323253810595890063789096960"); list.add("002212024012323302110595891250544570368"); list.add("002212024012323360810595892705027252224"); list.add("002212024012323374510595893113266757632"); list.add("002212024012323425410595894409451925504"); list.add("002212024012323442710595894800180465664"); list.add("002212024012323452610595895048568954880"); list.add("002212024012323461610595895257464655872"); list.add("002212024012323493110595896075039363072"); list.add("002212024012323495410595896172860530688"); list.add("002212024012400003310595898850435289088"); list.add("002212024012400024810595899418145021952"); list.add("002212024012400101510595901293923782656"); list.add("002212024012400105810595901474398183424"); list.add("002212024012400131010595902027414274048"); list.add("002212024012400134110595902158309625856"); list.add("002212024012400224210595904423904874496"); list.add("002212024012400240510595904772956311552"); list.add("002212024012400270910595905543972257792"); list.add("002212024012400311310595906567774523392"); list.add("002212024012400324110595906938400002048"); list.add("002212024012400461710595910360280977408"); list.add("002212024012400464310595910470879576064"); list.add("002212024012400482310595910889996406784"); list.add("002212024012400501810595911373670805504"); list.add("002212024012400503510595911442015653888"); list.add("002212024012400560610595912833145991168"); list.add("002212024012400562510595912911242596352"); list.add("002212024012400590810595913595867516928"); list.add("002212024012401053210595915206301155328"); list.add("002212024012401131110595917132325552128"); list.add("002212024012401251510595920166320304128"); list.add("002212024012401282810595920975199531008"); list.add("002212024012401302210595921455332319232"); list.add("002212024012401332010595922200864083968"); list.add("002212024012401363310595923010112868352"); list.add("002212024012401404110595924051456098304"); list.add("002212024012401443210595925018746200064"); list.add("002212024012401481310595925947733344256"); list.add("002212024012401521710595926968413577216"); list.add("002212024012401552210595927746547634176"); list.add("002212024012401561510595927966886035456"); list.add("002212024012402022110595929505387073536"); list.add("002212024012402160810595932974146973696"); list.add("002212024012402203410595934088049872896"); list.add("002212024012402293610595936360154877952"); list.add("002212024012402323710595937119997198336"); list.add("002212024012402521310595942054462652416"); list.add("002212024012403041810595945094157033472"); list.add("002212024012403043910595945183652511744"); list.add("002212024012403064710595945717049237504"); list.add("002212024012403105110595946741463154688"); list.add("002212024012403115610595947015502360576"); list.add("002212024012403254510595950492990242816"); list.add("002212024012403373910595953488006336512"); list.add("002212024012404031710595959939080540160"); list.add("002212024012404094410595961560440889344"); list.add("002212024012404190110595963896483979264"); list.add("002212024012404260810595965688332591104"); list.add("002212024012404433610595970082219814912"); list.add("002212024012404451710595970507260731392"); list.add("002212024012404562210595973295369789440"); list.add("002212024012405005310595974433766809600"); list.add("002212024012405021910595974794384965632"); list.add("002212024012405183210595978876745019392"); list.add("002212024012405304310595981939090214912"); list.add("002212024012405381410595983831633092608"); list.add("002212024012405414310595984710426292224"); list.add("002212024012406290010595996606340419584"); list.add("002212024012406400410595999395040948224"); list.add("002212024012407183710596009093261815808"); list.add("002212024012407470010596016236782284800"); list.add("002212024012407474910596016442392281088"); list.add("002212024012408055510596020998708334592"); list.add("002212024012408410710596029854709248000"); list.add("002212024012409180410596039156271271936"); list.add("002212024012409183910596039301595484160"); list.add("002212024012409252210596040992663359488"); list.add("002212024012409413510596045073053446144"); list.add("002212024012410240410596055763852611584"); list.add("002212024012410330010596058013689860096"); list.add("002212024012410385610596059504934821888"); list.add("002212024012410572810596064171007049728"); list.add("002212024012411131610596068144381054976"); list.add("002212024012411170310596069100145725440"); list.add("002212024012411243810596071004954329088"); list.add("002212024012411273210596071737271578624"); list.add("002212024012411314110596072781275627520"); list.add("002212024012411351210596073667398004736"); list.add("002212024012411491810596077214982111232"); list.add("002212024012411572910596079274879287296"); list.add("002212024012412015310596080380105543680"); list.add("002212024012412104710596082619393306624"); list.add("002212024012412164610596084126972805120"); list.add("002212024012412221610596085510179770368"); list.add("002212024012412253810596086356365402112"); list.add("002212024012412405410596090198266597376"); list.add("002212024012412433910596090890226094080"); list.add("002212024012412581410596094563861778432"); list.add("002212024012413015910596095505213100032"); list.add("002212024012413045210596096232899149824"); list.add("002212024012413053810596096423282204672"); list.add("002212024012413083810596097178038272000"); list.add("002212024012413100510596097542523838464"); list.add("002212024012413161310596099088167297024"); list.add("002212024012413190110596099792573427712"); list.add("002212024012413221710596100612475932672"); list.add("002212024012413240710596101077892714496"); list.add("002212024012413302710596102669426589696"); list.add("002212024012413310110596102811337711616"); list.add("002212024012413313110596102936819339264"); list.add("002212024012413335910596103559919820800"); list.add("002212024012413442210596106173938520064"); list.add("002212024012413450310596106345414217728"); list.add("002212024012413475410596107063074422784"); list.add("002212024012413504610596107783276187648"); list.add("002212024012413522310596108188905308160"); list.add("002212024012414013810596110516212527104"); list.add("002212024012414080810596112152818053120"); list.add("002212024012414084510596112307070636032"); list.add("002212024012414154110596114054089998336"); list.add("002212024012414212310596115486918483968"); list.add("002212024012414251910596116476434776064"); list.add("002212024012414264610596116843331518464"); list.add("002212024012414270710596116930981916672"); list.add("002212024012414274710596117097629151232"); list.add("002212024012414285810596117395249426432"); list.add("002212024012414334610596118605242363904"); list.add("002212024012414353110596119044177121280"); list.add("002212024012414424510596120863262699520"); list.add("002212024012414440110596121183926480896"); list.add("002212024012414534910596123650806140928"); list.add("002212024012414552410596124049462226944"); list.add("002212024012415001410596125266336899072"); list.add("002212024012415020710596125738349064192"); list.add("002212024012415022310596125804434640896"); list.add("002212024012415033210596126092828205056"); list.add("002212024012415044410596126398605549568"); list.add("002212024012415104210596127897259728896"); list.add("002212024012415110510596127994359480320"); list.add("002212024012415114610596128168455036928"); list.add("002212024012415161710596129301591851008"); list.add("002212024012415222910596130862832373760"); list.add("002212024012415250210596131506540400640"); list.add("002212024012415314510596133195975430144"); list.add("002212024012415355910596134262811754496"); list.add("002212024012415405810596135515831861248"); list.add("002212024012415435510596136256187224064"); list.add("002212024012415463410596136922839351296"); list.add("002212024012415513910596138201836769280"); list.add("002212024012415525010596138502270611456"); list.add("002212024012416011510596140621072596992"); list.add("002212024012416022010596140890691694592"); list.add("002212024012416030410596141075835973632"); list.add("002212024012416084410596142503412301824"); list.add("002212024012416085410596142544638009344"); list.add("002212024012416092010596142652977516544"); list.add("002212024012416200610596145361705664512"); list.add("002212024012416245310596146567282364416"); list.add("002212024012416282110596147439136047104"); list.add("002212024012416341610596148927923609600"); list.add("002212024012416345410596149087636779008"); list.add("002212024012416362210596149456771944448"); list.add("002212024012416455710596151870845026304"); list.add("002212024012416463410596152021953744896"); list.add("002212024012416483810596152544156647424"); list.add("002212024012416542710596154007042977792"); list.add("002212024012417010710596155687546089472"); list.add("002212024012417045210596156628253143040"); list.add("002212024012417124210596158601898168320"); list.add("002212024012417162210596159523788775424"); list.add("002212024012417323210596163592295108608"); list.add("002212024012417341410596164019950579712"); list.add("002212024012417375110596164929401507840"); list.add("002212024012417474510596167422092148736"); list.add("002212024012417590110596170255945297920"); list.add("002212024012418005410596170729959518208"); list.add("002212024012418202810596175653293117440"); list.add("002212024012418351010596179355514871808"); list.add("002212024012418393610596180470929412096"); list.add("002212024012418395510596180551245983744"); list.add("002212024012419001210596185653528645632"); list.add("002212024012419010810596185890123350016"); list.add("002212024012419043410596186754013351936"); list.add("002212024012419120310596188635666206720"); list.add("002212024012419224210596191317736677376"); list.add("002212024012419262410596192246100328448"); list.add("002212024012419341110596194206796861440"); list.add("002212024012419413710596196078475669504"); list.add("002212024012419423910596196335687004160"); list.add("002212024012419462610596197291069075457"); list.add("002212024012419535210596199157847154688"); list.add("002212024012420010510596200974375649280"); list.add("002212024012420015410596201181869731840"); list.add("002212024012420160710596204759901634560"); list.add("002212024012420244510596206930956013568"); list.add("002212024012420281510596207810812170240"); list.add("002212024012420331210596209057275441152"); list.add("002212024012420392910596210638573948928"); list.add("002212024012420450210596212037279670272"); list.add("002212024012420481010596212824711528448"); list.add("002212024012420493610596213186622214144"); list.add("002212024012420541810596214366198951936"); list.add("002212024012420591710596215623235817472"); list.add("002212024012420592810596215669408522240"); list.add("002212024012421013910596216219838050304"); list.add("002212024012421020710596216334917128192"); list.add("002212024012421031810596216634688106496"); list.add("002212024012421041310596216865513238528"); list.add("002212024012421053110596217191970832384"); list.add("002212024012421071710596217635863429120"); list.add("002212024012421104810596218519130296320"); list.add("002212024012421132510596219180126629888"); list.add("002212024012421152210596219670938427392"); list.add("002212024012421172610596220190358142976"); list.add("002212024012421173610596220232933220352"); list.add("002212024012421190610596220609560436736"); list.add("002212024012421232910596221712071589888"); list.add("002212024012421300410596223367865081856"); list.add("002212024012421352010596224695679176704"); list.add("002212024012421380210596225372135034880"); list.add("002212024012421381110596225413853040640"); list.add("002212024012421494610596228327226048512"); list.add("002212024012421513010596228761995018240"); list.add("002212024012421541110596229436324827136"); list.add("002212024012421582310596230496074420224"); list.add("002212024012421594510596230839530807296"); list.add("002212024012422015410596231381615837184"); list.add("002212024012422065110596232626785046528"); list.add("002212024012422143610596234575051878400"); list.add("002212024012422161710596235001508757504"); list.add("002212024012422194510596235871079231488"); list.add("002212024012422201910596236014819909632"); list.add("002212024012422242210596237032775602176"); list.add("002212024012422273910596237862566297600"); list.add("002212024012422294810596238403157557248"); list.add("002212024012422305910596238698814046208"); list.add("002212024012422322210596239049153466368"); list.add("002212024012422322610596239062372016128"); list.add("002212024012422432110596241811450777600"); list.add("002212024012422445110596242190531973120"); list.add("002212024012422485710596243220031664128"); list.add("002212024012422493910596243398781161472"); list.add("002212024012422500410596243502414024704"); list.add("002212024012422504010596243654419566592"); list.add("002212024012422525810596244231759421440"); list.add("002212024012422562510596245098158981120"); list.add("002212024012422572010596245332564176896"); list.add("002212024012422572710596245361245638656"); list.add("002212024012422590810596245783509114880"); list.add("002212024012423024710596246700133613568"); list.add("002212024012423082910596248135290998784"); list.add("002212024012423171610596250344875749376"); list.add("002212024012423191110596250828489269248"); list.add("002212024012423235710596252028151627776"); list.add("002212024012423281110596253096039878656"); list.add("002212024012423293610596253451184668672"); list.add("002212024012423323710596254209563000832"); list.add("002212024012423331910596254385353412608"); list.add("002212024012423405010596256278308126720"); list.add("002212024012423450710596257354631237632"); list.add("002212024012423464110596257750605299712"); list.add("002212024012423495510596258562994700288"); list.add("002212024012500133610596264522134974464"); list.add("002212024012500165510596265356335902720"); list.add("002212024012500183310596265769405423616"); list.add("002212024012500230910596266928956592128"); list.add("002212024012500245210596267357111185408"); list.add("002212024012500252810596267510273572864"); list.add("002212024012500271910596267975571267584"); list.add("002212024012500411010596271462427332608"); list.add("002212024012500424510596271859151228928"); list.add("002212024012500474010596273098264084480"); list.add("002212024012500553810596275101703925760"); list.add("002212024012500570910596275485068316672"); list.add("002212024012501024310596276884505423872"); list.add("002212024012501062710596277822794932224"); list.add("002212024012501070610596277986844856320"); list.add("002212024012501094010596278631837564928"); list.add("002212024012501182910596280850736369664"); list.add("002212024012501230610596282013614280704"); list.add("002212024012501274510596283184855769088"); list.add("002212024012501301910596283829623345152"); list.add("002212024012501312410596284101791805440"); list.add("002212024012501370310596285522947756032"); list.add("002212024012501390710596286044755132416"); list.add("002212024012501433610596287171380768768"); list.add("002212024012501512010596289118762553344"); list.add("002212024012501553810596290202555998208"); list.add("002212024012501581210596290847816220672"); list.add("002212024012502031810596292129053310976"); list.add("002212024012502052610596292666851164160"); list.add("002212024012502185310596296050601721856"); list.add("002212024012502193710596296235481387008"); list.add("002212024012502230710596297117048393728"); list.add("002212024012502364210596300537304096768"); list.add("002212024012502434910596302328511266816"); list.add("002212024012502503810596304040819097600"); list.add("002212024012502535610596304871938387968"); list.add("002212024012502561310596305448811229184"); list.add("002212024012503034110596307324449288192"); list.add("002212024012503041010596307449664069632"); list.add("002212024012503100310596308928939524096"); list.add("002212024012503172210596310770871300096"); list.add("002212024012503205410596311658262892544"); list.add("002212024012503310510596314221402066944"); list.add("002212024012503312910596314321585537024"); list.add("002212024012503340210596314965498261504"); list.add("002212024012503344210596315130685878272"); list.add("002212024012503375710596315951184859136"); list.add("002212024012503392310596316311260819456"); list.add("002212024012503393010596316339713695744"); list.add("002212024012503413510596316864347762688"); list.add("002212024012503445810596317715682414592"); list.add("002212024012503552110596320328986492928"); list.add("002212024012504145210596325239952568320"); list.add("002212024012504145710596325260917571584"); list.add("002212024012504343910596330219716333568"); list.add("002212024012504411510596331879384158208"); list.add("002212024012504510710596334362199715840"); list.add("002212024012505035010596337564303314944"); list.add("002212024012505054010596338023422140416"); list.add("002212024012505175410596341101813923840"); list.add("002212024012505290110596343900293464064"); list.add("002212024012505393210596346546505183232"); list.add("002212024012505450310596347937385259008"); list.add("002212024012505470610596348450432524288"); list.add("002212024012505491010596348972592091136"); list.add("002212024012506105810596354458192072704"); list.add("002212024012506450710596363050202918912"); list.add("002212024012508172910596386298111844352"); list.add("002212024012508202110596387019505397760"); list.add("002212024012508314610596389891169144832"); list.add("002212024012508425910596392712979312640"); list.add("002212024012509143510596400666094772224"); list.add("002212024012509181510596401590933749760"); list.add("002212024012509271610596403856830988288"); list.add("002212024012509582210596411687006834688"); list.add("002212024012509593710596412001463685120"); list.add("002212024012510053510596413500157501440"); list.add("002212024012510132910596415491319619584"); list.add("002212024012510505710596424918450995200"); list.add("002212024012510513010596425056230699008"); list.add("002212024012510571710596426510325612544"); list.add("002212024012511140510596430739352997888"); list.add("002212024012511175610596431707014602752"); list.add("002212024012511261810596433814552514560"); list.add("002212024012511284110596434414019219456"); list.add("002212024012511313710596435153651822592"); list.add("002212024012511320010596435247974174720"); list.add("002212024012511331610596435568951644160"); list.add("002212024012511344510596435938674536448"); list.add("002212024012511371510596436569352929280"); list.add("002212024012511481010596439316381716480"); list.add("002212024012512004610596442486566899712"); list.add("002212024012512055710596443792694136832"); list.add("002212024012512072010596444142271139840"); list.add("002212024012512073810596444214462373888"); list.add("002212024012512200110596447331587846144"); list.add("002212024012512310710596450127617630208"); list.add("002212024012512324710596450544893620224"); list.add("002212024012512335610596450835475615744"); list.add("002212024012512363010596451481409118208"); list.add("002212024012512395310596452331415306240"); list.add("002212024012512413410596452757691822080"); list.add("002212024012512430210596453123189547008"); list.add("002212024012512481810596454448402329600"); list.add("002212024012512532410596455733763407872"); list.add("002212024012513005910596457640173625344"); list.add("002212024012513065310596459127132508160"); list.add("002212024012513111410596460222621798400"); list.add("002212024012513120310596460425195986944"); list.add("002212024012513164810596461623852261376"); list.add("002212024012513183210596462060270718976"); list.add("002212024012513215110596462892275331072"); list.add("002212024012513254710596463883090718720"); list.add("002212024012513330910596465736392810497"); list.add("002212024012513341510596466014275915776"); list.add("002212024012513443410596468611305295872"); list.add("002212024012513462510596469074489831424"); list.add("002212024012513464910596469175820709888"); list.add("002212024012513483510596469620905205760"); list.add("002212024012513502910596470097049374720"); list.add("002212024012513514310596470411269853184"); list.add("002212024012513531710596470803693162496"); list.add("002212024012513583710596472143980388352"); list.add("002212024012513593210596472377701978112"); list.add("002212024012514023210596473130132561920"); list.add("002212024012514041210596473549327532032"); list.add("002212024012514091910596474839154683904"); list.add("002212024012514115210596475478988939264"); list.add("002212024012514170510596476793248382976"); list.add("002212024012514185510596477253318541312"); list.add("002212024012514234110596478453482672128"); list.add("002212024012514254110596478958621597696"); list.add("002212024012514263210596479171810496512"); list.add("002212024012514271910596479367086198784"); list.add("002212024012514322210596480638478385152"); list.add("002212024012514410010596482813555212288"); list.add("002212024012514412510596482917786603520"); list.add("002212024012514420310596483076107100160"); list.add("002212024012514431010596483358254858240"); list.add("002212024012514465810596484313060835328"); list.add("002212024012514474510596484511467163648"); list.add("002212024012514510210596485336725606400"); list.add("002212024012514531010596485873509695488"); list.add("002212024012514570010596486839190331392"); list.add("002212024012515014310596488024325943296"); list.add("002212024012515030510596488368559398912"); list.add("002212024012515042510596488703979352064"); list.add("002212024012515064710596489302294495232"); list.add("002212024012515073210596489490269556736"); list.add("002212024012515174610596492063045255168"); list.add("002212024012515194810596492574315151360"); list.add("002212024012515210210596492887708864512"); list.add("002212024012515265910596494385225752576"); list.add("002212024012515303310596495283008770048"); list.add("002212024012515314810596495597611577344"); list.add("002212024012515332210596495991251202048"); list.add("002212024012515363710596496808264716288"); list.add("002212024012515470110596499427231965184"); list.add("002212024012515505810596500420775317504"); list.add("002212024012515522310596500776076144640"); list.add("002212024012515535710596501168707801088"); list.add("002212024012515551710596501506746916864"); list.add("002212024012515563310596501825583280128"); list.add("002212024012515582510596502296219787264"); list.add("002212024012516044710596503896416186368"); list.add("002212024012516152610596506578186203136"); list.add("002212024012516202610596507835310104576"); list.add("002212024012516275910596509734142648320"); list.add("002212024012516294110596510162891931648"); list.add("002212024012516341110596511293850419200"); list.add("002212024012516455310596514237940146176"); list.add("002212024012516461610596514337539391488"); list.add("002212024012516470510596514541091545088"); list.add("002212024012516475810596514765485232128"); list.add("002212024012517045010596519009464549376"); list.add("002212024012517104410596520492359581696"); list.add("002212024012517133010596521190524616704"); list.add("002212024012517160710596521849838231552"); list.add("002212024012517214310596523257530540032"); list.add("002212024012517244610596524025338261504"); list.add("002212024012517320010596525844669521920"); list.add("002212024012518314310596540873409658880"); list.add("002212024012518340410596541465895170048"); list.add("002212024012518491610596545290486276096"); list.add("002212024012519062410596549602824802304"); list.add("002212024012519084910596550208473755648"); list.add("002212024012519160810596552050467315712"); list.add("002212024012519285810596555282065588224"); list.add("002212024012519292110596555377330814976"); list.add("002212024012519375810596557545104175104"); list.add("002212024012519551210596561884610711552"); list.add("002212024012520024010596563761675227136"); list.add("002212024012520032910596563969299537920"); list.add("002212024012520092210596565446757838848"); list.add("002212024012520233310596569019589189632"); list.add("002212024012520271710596569956582313984"); list.add("002212024012520284210596570313443344384"); list.add("002212024012520340010596571646318518272"); list.add("002212024012520413910596573573571846144"); list.add("002212024012520421810596573737971474432"); list.add("002212024012520533710596576586161356800"); list.add("002212024012520552310596577029772890112"); list.add("002212024012520584310596577868603359232"); list.add("002212024012521004610596578383249502208"); list.add("002212024012521020110596578696491859968"); list.add("002212024012521022210596578786252546048"); list.add("002212024012521022410596578796204052480"); list.add("002212024012521035810596579188092526592"); list.add("002212024012521040010596579196230758400"); list.add("002212024012521071310596580007874719744"); list.add("002212024012521114110596581130455830528"); list.add("002212024012521180310596582731222261760"); list.add("002212024012521231510596584042150055936"); list.add("002212024012521264910596584937587863552"); list.add("002212024012521273910596585150611357696"); list.add("002212024012521284810596585436567392256"); list.add("002212024012521290310596585502662844416"); list.add("002212024012521364810596587451672027136"); list.add("002212024012521382210596587845656076288"); list.add("002212024012521452410596589613867487232"); list.add("002212024012521534410596591714697965568"); list.add("002212024012521544410596591964940574720"); list.add("002212024012521575610596592770084827136"); list.add("002212024012521581110596592832616529920"); list.add("002212024012521584210596592962658594816"); list.add("002212024012522004110596593461977903104"); list.add("002212024012522025110596594007846780928"); list.add("002212024012522053310596594684901883904"); list.add("002212024012522090510596595577288777728"); list.add("002212024012522095710596595795070750720"); list.add("002212024012522100110596595812088541184"); list.add("002212024012522100310596595818325307392"); list.add("002212024012522102110596595895771267072"); list.add("002212024012522142610596596923780190208"); list.add("002212024012522164010596597485099896832"); list.add("002212024012522192710596598182925131776"); list.add("002212024012522213910596598740457820160"); list.add("002212024012522233210596599211535753216"); list.add("002212024012522362110596602437972938752"); list.add("002212024012522461910596604944134791168"); list.add("002212024012522471110596605164265730048"); list.add("002212024012522480110596605374396006400"); list.add("002212024012522493110596605753194020864"); list.add("002212024012522560010596607383241289728"); list.add("002212024012522595410596608364912664576"); list.add("002212024012522595510596608368084840448"); list.add("002212024012523002810596608505201643520"); list.add("002212024012523085110596610615410315264"); list.add("002212024012523090910596610693065957376"); list.add("002212024012523105510596611137634791424"); list.add("002212024012523140710596611940293705728"); list.add("002212024012523145310596612136810401792"); list.add("002212024012523152310596612260471066624"); list.add("002212024012523220110596613931343245312"); list.add("002212024012523243510596614578073698304"); list.add("002212024012523293410596615831488942080"); list.add("002212024012523295410596615913869234176"); list.add("002212024012523313310596616329544921088"); list.add("002212024012523370210596617711306866688"); list.add("002212024012523404410596618641859059712"); list.add("002212024012523423810596619117820469248"); list.add("002212024012523485210596620687716798464"); list.add("002212024012523550610596622257878892544"); list.add("002212024012600064010596625165415440384"); list.add("002212024012600065210596625216230068224"); list.add("002212024012600135210596626978091925504"); list.add("002212024012600171510596627829856727040"); list.add("002212024012600211410596628831931322368"); list.add("002212024012600211610596628842512547840"); list.add("002212024012600253810596629937864396800"); list.add("002212024012600313110596631418514038784"); list.add("002212024012600313110596631421246304256"); list.add("002212024012600344510596632234135326720"); list.add("002212024012600373110596632931238301696"); list.add("002212024012600384810596633253417492480"); list.add("002212024012600434310596634492427657216"); list.add("002212024012600525510596636806517268480"); list.add("002212024012600564110596637752559599616"); list.add("002212024012600582510596638188724674560"); list.add("002212024012601011510596638901423435776"); list.add("002212024012601043010596639721811021824"); list.add("002212024012601060810596640133061402624"); list.add("002212024012601115810596641599728013312"); list.add("002212024012601151210596642412487897088"); list.add("002212024012601163110596642744838037504"); list.add("002212024012601195210596643589321510912"); list.add("002212024012601200010596643620023783424"); list.add("002212024012601293110596646016742973440"); list.add("002212024012601325510596646873828335617"); list.add("002212024012601341110596647193045532672"); list.add("002212024012601344410596647328832704512"); list.add("002212024012601424010596649324074438656"); list.add("002212024012601455610596650148718047232"); list.add("002212024012601494810596651120103096320"); list.add("002212024012601522710596651786914586624"); list.add("002212024012601582210596653277358444544"); list.add("002212024012602171110596658012917981184"); list.add("002212024012602245410596659952741089280"); list.add("002212024012602294610596661179195650048"); list.add("002212024012602324310596661921523261440"); list.add("002212024012602354810596662696595017728"); list.add("002212024012602410210596664014761795584"); list.add("002212024012602414510596664194392715264"); list.add("002212024012602475010596665725794246656"); list.add("002212024012602535910596667275002683392"); list.add("002212024012602573410596668174979502080"); list.add("002212024012603005310596669010418397184"); list.add("002212024012603092810596671169845649408"); list.add("002212024012603105610596671540284846080"); list.add("002212024012603314210596676767064956928"); list.add("002212024012603361110596677892952641536"); list.add("002212024012603363610596677997013356544"); list.add("002212024012603433110596679740816183296"); list.add("002212024012603561510596682944089837568"); list.add("002212024012603565010596683091034890240"); list.add("002212024012604105310596686625712734208"); list.add("002212024012604150710596687693245927424"); list.add("002212024012604182310596688513636933632"); list.add("002212024012604444010596695126918987776"); list.add("002212024012605000510596699006858887168"); list.add("002212024012605292910596706406133256192"); list.add("002212024012605573410596713472532901888"); list.add("002212024012606090610596716377199206400"); list.add("002212024012606151710596717933854838784"); list.add("002212024012606234710596720071313944576"); list.add("002212024012607071410596731004975443968"); list.add("002212024012607143210596732844004929536"); list.add("002212024012607263910596735891924779008"); list.add("002212024012607305010596736944483192832"); list.add("002212024012608221710596749892085731328"); list.add("002212024012608280610596751357779050496"); list.add("002212024012609025910596760133634555904"); list.add("002212024012609092910596761772407562240"); list.add("002212024012610134310596777935577743360"); list.add("002212024012610270510596781300208259072"); list.add("002212024012610313210596782418495889408"); list.add("002212024012610351010596783334838702080"); list.add("002212024012610425910596785302000304128"); list.add("002212024012610590810596789364495282176"); list.add("002212024012610594610596789525555273728"); list.add("002212024012611013810596789993750622208"); list.add("002212024012611051310596790896446578688"); list.add("002212024012611072610596791453832118272"); list.add("002212024012611351110596798436935028736"); list.add("002212024012611400910596799688385318912"); list.add("002212024012611510510596802440628924416"); list.add("002212024012611511610596802486096199680"); list.add("002212024012612001110596804727217684480"); list.add("002212024012612084210596806873641213952"); list.add("002212024012612091710596807019856621568"); list.add("002212024012612111110596807498040954880"); list.add("002212024012612133110596808085669347328"); list.add("002212024012612133310596808094772002816"); list.add("002212024012612165710596808948016074752"); list.add("002212024012612165810596808951209828352"); list.add("002212024012612243210596810857573601280"); list.add("002212024012612430310596815518682664960"); list.add("002212024012612460210596816268927819776"); list.add("002212024012612490010596817013698924544"); list.add("002212024012612493010596817140970356736"); list.add("002212024012612562210596818868566953984"); list.add("002212024012612584610596819471879835648"); list.add("002212024012612591810596819606192906240"); list.add("002212024012613021210596820337470300160"); list.add("002212024012613033710596820691813490688"); list.add("002212024012613061710596821365051748352"); list.add("002212024012613091910596822125985722368"); list.add("002212024012613155810596823802456137728"); list.add("002212024012613203910596824979040227328"); list.add("002212024012613230410596825586092408832"); list.add("002212024012613235910596825817712283648"); list.add("002212024012613250810596826108432044032"); list.add("002212024012613264210596826502197301248"); list.add("002212024012613272410596826679611392000"); list.add("002212024012613403810596830006439927808"); list.add("002212024012613420010596830350737760256"); list.add("002212024012613421010596830392477372416"); list.add("002212024012613422410596830454578040832"); list.add("002212024012613425610596830588798173184"); list.add("002212024012613443410596830997314887680"); list.add("002212024012613462210596831450437640192"); list.add("002212024012614034810596835840145874944"); list.add("002212024012614044010596836055065657344"); list.add("002212024012614071310596836697954971648"); list.add("002212024012614073410596836784835743744"); list.add("002212024012614130010596838154710749184"); list.add("002212024012614132810596838271978479616"); list.add("002212024012614135310596838376027394048"); list.add("002212024012614143110596838534793256960"); list.add("002212024012614185810596839653146009600"); list.add("002212024012614205310596840137095344128"); list.add("002212024012614242410596841021615337472"); list.add("002212024012614255510596841402627956736"); list.add("002212024012614290910596842218957135872"); list.add("002212024012614344910596843643877421056"); list.add("002212024012614360010596843940616204288"); list.add("002212024012614361910596844019919478784"); list.add("002212024012614401210596844997656268800"); list.add("002212024012614442010596846037935738880"); list.add("002212024012614452010596846290241708032"); list.add("002212024012614475310596846934040637440"); list.add("002212024012614500010596847464112345088"); list.add("002212024012614544810596848672239865856"); list.add("002212024012614565210596849191033131008"); list.add("002212024012615011010596850276341055488"); list.add("002212024012615061810596851565027229696"); list.add("002212024012615073510596851888324730880"); list.add("002212024012615080910596852030635855872"); list.add("002212024012615133210596853385213108224"); list.add("002212024012615154510596853944172838912"); list.add("002212024012615165010596854219290824704"); list.add("002212024012615202810596855132275433472"); list.add("002212024012615255610596856509732900864"); list.add("002212024012615294110596857450572111872"); list.add("002212024012615371810596859366456578048"); list.add("002212024012615384410596859730363011072"); list.add("002212024012615444810596861257615843328"); list.add("002212024012615542110596863660429209600"); list.add("002212024012615591810596864906606084096"); list.add("002212024012616014710596865530116567040"); list.add("002212024012616140710596868635238010880"); list.add("002212024012616173110596869487696744448"); list.add("002212024012616224310596870797591957504"); list.add("002212024012616255110596871585648181248"); list.add("002212024012616284310596872306060816384"); list.add("002212024012616341010596873680724549632"); list.add("002212024012616400110596875151679856640"); list.add("002212024012616530910596878454825095168"); list.add("002212024012617053710596881592760078336"); list.add("002212024012617354110596889160251703296"); list.add("002212024012617431810596891077571047424"); list.add("002212024012618085710596897530502381568"); list.add("002212024012618111110596898092297023488"); list.add("002212024012618120510596898321659195392"); list.add("002212024012618213110596900696373456896"); list.add("002212024012618233510596901216592130048"); list.add("002212024012618353310596904224997335040"); list.add("002212024012618362210596904431560544256"); list.add("002212024012618372110596904679920041984"); list.add("002212024012618445810596906597647507456"); list.add("002212024012618465510596907084887711744"); list.add("002212024012618485410596907586795540480"); list.add("002212024012618572910596909747932135424"); list.add("002212024012619153410596914295840006144"); list.add("002212024012619284510596917615327571968"); list.add("002212024012619301710596918002318213120"); list.add("002212024012619370710596919721367138304"); list.add("002212024012619433910596921365423919104"); list.add("002212024012619435610596921435711537152"); list.add("002212024012619512610596923321100918784"); list.add("002212024012619594710596925425418403840"); list.add("002212024012620013010596925854903324672"); list.add("002212024012620053810596926897872797696"); list.add("002212024012620074910596927446352523264"); list.add("002212024012620103410596928139169718272"); list.add("002212024012620122610596928608487804928"); list.add("002212024012620182510596930113848147968"); list.add("002212024012620264110596932195319435264"); list.add("002212024012620270610596932299794579456"); list.add("002212024012620374610596934981568520192"); list.add("002212024012620380310596935056187322368"); list.add("002212024012620400010596935543380856832"); list.add("002212024012620421310596936104939245568"); list.add("002212024012620452710596936917239635968"); list.add("002212024012620552610596939430883291136"); list.add("002212024012620561010596939614417645568"); list.add("002212024012620571510596939887360696320"); list.add("002212024012621001810596940652605042688"); list.add("002212024012621010610596940854749679616"); list.add("002212024012621042510596941688146329600"); list.add("002212024012621045810596941826469253120"); list.add("002212024012621090510596942865863929856"); list.add("002212024012621095210596943063189114880"); list.add("002212024012621110010596943346012094464"); list.add("002212024012621153210596944486643494912"); list.add("002212024012621182410596945210053066752"); list.add("002212024012621190310596945370424602624"); list.add("002212024012621240310596946630447403008"); list.add("002212024012621314510596948568661094400"); list.add("002212024012621363910596949800948297728"); list.add("002212024012621390210596950402778128384"); list.add("002212024012621440110596951656313298944"); list.add("002212024012621521310596953721078185984"); list.add("002212024012621550610596954446588080128"); list.add("002212024012622025210596956398584418304"); list.add("002212024012622030010596956432086245376"); list.add("002212024012622073310596957577963859968"); list.add("002212024012622095610596958178753994752"); list.add("002212024012622095710596958181461413888"); list.add("002212024012622120110596958701466832896"); list.add("002212024012622190010596960459361939456"); list.add("002212024012622200010596960709491130368"); list.add("002212024012622210710596960992628482048"); list.add("002212024012622212410596961062748856320"); list.add("002212024012622214910596961167445192704"); list.add("002212024012622254010596962135461031936"); list.add("002212024012622274910596962679099686912"); list.add("002212024012622282310596962820507627520"); list.add("002212024012622283910596962886304526336"); list.add("002212024012622305710596963465589809152"); list.add("002212024012622314310596963660533161984"); list.add("002212024012622333910596964144753082368"); list.add("002212024012622400710596965771552653312"); list.add("002212024012622403510596965890492563456"); list.add("002212024012622433110596966629305446400"); list.add("002212024012622491910596968086850404352"); list.add("002212024012622574510596970210364608512"); list.add("002212024012622584510596970461642194944"); list.add("002212024012622593610596970675988766720"); list.add("002212024012623001010596970818127491072"); list.add("002212024012623073810596972696387309568"); list.add("002212024012623132710596974163092471808"); list.add("002212024012623154610596974743176282112"); list.add("002212024012623222110596976403223613440"); list.add("002212024012623235310596976787145523200"); list.add("002212024012623254110596977240450125824"); list.add("002212024012623262110596977409705050112"); list.add("002212024012623263710596977476996296704"); list.add("002212024012623300110596978329861836800"); list.add("002212024012623330410596979099201851392"); list.add("002212024012623365910596980084983664640"); list.add("002212024012623382510596980444678787072"); list.add("002212024012623424810596981549638287360"); list.add("002212024012623432310596981693052977152"); list.add("002212024012623484210596983033893949440"); list.add("002212024012623505710596983598089625600"); list.add("002212024012623513310596983750616616960"); list.add("002212024012700040610596986908291256320"); list.add("002212024012700043710596987037593489408"); list.add("002212024012700052810596987250998833152"); list.add("002212024012700072410596987737132093440"); list.add("002212024012700092710596988255396917248"); list.add("002212024012700173810596990313121124352"); list.add("002212024012700175810596990398079270912"); list.add("002212024012700202210596991002928128000"); list.add("002212024012700210710596991192117706752"); list.add("002212024012700260210596992429987852288"); list.add("002212024012700321210596993981962190848"); list.add("002212024012700340310596994445872898048"); list.add("002212024012700350410596994702392516608"); list.add("002212024012700370110596995192033505280"); list.add("002212024012700462610596997562865901568"); list.add("002212024012700502010596998543783583744"); list.add("002212024012700533310596999354810982400"); list.add("002212024012700555210596999935513653248"); list.add("002212024012700592010597000806541381632"); list.add("002212024012700592210597000817463226368"); list.add("002212024012701002110597001066444165120"); list.add("002212024012701012010597001312986812416"); list.add("002212024012701042910597002103642279936"); list.add("002212024012701070110597002743353331712"); list.add("002212024012701144010597004668607234048"); list.add("002212024012701211610597006328086745088"); list.add("002212024012701232610597006872725508096"); list.add("002212024012701261510597007583387283456"); list.add("002212024012701331810597009354969141248"); list.add("002212024012701333910597009443309613056"); list.add("002212024012701343510597009678072184832"); list.add("002212024012701384010597010705224650752"); list.add("002212024012701414210597011469890420736"); list.add("002212024012701461110597012599045181440"); list.add("002212024012701535410597014541154537472"); list.add("002212024012701542810597014682265624576"); list.add("002212024012701571410597015379763679232"); list.add("002212024012701584410597015758291226624"); list.add("002212024012702005810597016318192287744"); list.add("002212024012702063510597017734641287168"); list.add("002212024012702151510597019915134636032"); list.add("002212024012702192210597020950948630528"); list.add("002212024012702194810597021056947154944"); list.add("002212024012702203410597021251158056960"); list.add("002212024012702244910597022320593145856"); list.add("002212024012702255210597022583828152320"); list.add("002212024012702284610597023314264891392"); list.add("002212024012702341810597024706679664640"); list.add("002212024012702402010597026226472124416"); list.add("002212024012702484310597028337079611392"); list.add("002212024012702543710597029821318582272"); list.add("002212024012702572210597030512765112320"); list.add("002212024012703020810597031714195591168"); list.add("002212024012703033910597032094379921408"); list.add("002212024012703042710597032293286170624"); list.add("002212024012703061910597032766246576128"); list.add("002212024012703081710597033260312317952"); list.add("002212024012703195710597036197684146176"); list.add("002212024012703310010597038976819437568"); list.add("002212024012703375010597040697591554048"); list.add("002212024012703401010597041282621464576"); list.add("002212024012703493310597043643162992640"); list.add("002212024012703591410597046083007221760"); list.add("002212024012704011010597046568318816256"); list.add("002212024012704023110597046908065902592"); list.add("002212024012704283010597053445459234816"); list.add("002212024012704295410597053801473966080"); list.add("002212024012704313310597054215428395008"); list.add("002212024012704463110597057980602974208"); list.add("002212024012704581110597060916869459968"); list.add("002212024012705010010597061624180109312"); list.add("002212024012705083110597063518298435584"); list.add("002212024012705383510597071085108023296"); list.add("002212024012706314110597084445676728320"); list.add("002212024012706363410597085676302987264"); list.add("002212024012706551410597090374808629248"); list.add("002212024012707474510597103589493923840"); list.add("002212024012708022110597107265044336640"); list.add("002212024012708215510597112187732197376"); list.add("002212024012709163910597125964385058816"); list.add("002212024012709315110597129787006615552"); list.add("002212024012709375510597131314472017920"); list.add("002212024012710011110597137171111104512"); list.add("002212024012710204210597142080784818176"); list.add("002212024012710224810597142609334542336"); list.add("002212024012710362610597146042143141888"); list.add("002212024012710370410597146199809761280"); list.add("002212024012710462410597148549477945344"); list.add("002212024012710504510597149643280969728"); list.add("002212024012710532710597150322510680064"); list.add("002212024012711031010597152766123511808"); list.add("002212024012711071910597153811436990464"); list.add("002212024012711083410597154126112325632"); list.add("002212024012711102610597154595406286848"); list.add("002212024012711103310597154624541380608"); list.add("002212024012711193210597156885652959232"); list.add("002212024012711261710597158585088471040"); list.add("002212024012711293110597159398883098624"); list.add("002212024012711342210597160620974108672"); list.add("002212024012711523610597165206875262976"); list.add("002212024012712063410597168723973836800"); list.add("002212024012712064010597168747323527168"); list.add("002212024012712132810597170460393594880"); list.add("002212024012712155510597171077662052352"); list.add("002212024012712172910597171470748516352"); list.add("002212024012712180210597171610764804096"); list.add("002212024012712184610597171792127549440"); list.add("002212024012712200110597172107379335168"); list.add("002212024012712200410597172121482358784"); list.add("002212024012712224710597172802461978624"); list.add("002212024012712250910597173398740889600"); list.add("002212024012712274410597174050297839616"); list.add("002212024012712293710597174523713986560"); list.add("002212024012712415610597177623462137856"); list.add("002212024012712421710597177710743584768"); list.add("002212024012712431010597177933256134656"); list.add("002212024012712441010597178185066631168"); list.add("002212024012712464110597178820970512384"); list.add("002212024012712474710597179094419308544"); list.add("002212024012712485910597179397152763904"); list.add("002212024012712531310597180463942303744"); list.add("002212024012712565510597181394577412096"); list.add("002212024012713112510597185045016207360"); list.add("002212024012713123810597185349820473344"); list.add("002212024012713202010597187286316478464"); list.add("002212024012713271910597189046437875712"); list.add("002212024012713311310597190027423928320"); list.add("002212024012713364810597191429370236928"); list.add("002212024012713431810597193068072259584"); list.add("002212024012713483310597194386558619648"); list.add("002212024012713493810597194658913013760"); list.add("002212024012713503910597194916407451648"); list.add("002212024012713555610597196247971254272"); list.add("002212024012713573510597196662980857856"); list.add("002212024012713592910597197141114744832"); list.add("002212024012714011410597197579182317568"); list.add("002212024012714022610597197880366899200"); list.add("002212024012714072010597199115750113280"); list.add("002212024012714132410597200640709844992"); list.add("002212024012714155410597201272754831360"); list.add("002212024012714194410597202235623301120"); list.add("002212024012714221910597202886900019200"); list.add("002212024012714262710597203925184380928"); list.add("002212024012714283610597204467255046144"); list.add("002212024012714333010597205699566653440"); list.add("002212024012714345510597206058836254720"); list.add("002212024012714350110597206081005047808"); list.add("002212024012714350710597206107198713856"); list.add("002212024012714404510597207523170578432"); list.add("002212024012714421610597207906533146624"); list.add("002212024012714421710597207909353750528"); list.add("002212024012714471910597209177215094784"); list.add("002212024012714503310597209989781999616"); list.add("002212024012714520310597210369618169856"); list.add("002212024012714522910597210476485902336"); list.add("002212024012714572610597211722138636288"); list.add("002212024012714583610597212017155571712"); list.add("002212024012714593010597212242721046528"); list.add("002212024012714593610597212270682304512"); list.add("002212024012715024010597213041649897472"); list.add("002212024012715043110597213505954312192"); list.add("002212024012715060610597213903465279488"); list.add("002212024012715184310597217080835952640"); list.add("002212024012715352310597221274598043648"); list.add("002212024012715370010597221681318420480"); list.add("002212024012715380310597221946859806720"); list.add("002212024012715421210597222988183961600"); list.add("002212024012715434110597223363496505344"); list.add("002212024012715471910597224276508364800"); list.add("002212024012715490610597224727221985280"); list.add("002212024012715534210597225884730150912"); list.add("002212024012715570010597226714996207616"); list.add("002212024012716015610597227953393823744"); list.add("002212024012716221310597233058135265280"); list.add("002212024012716321710597235591140433920"); list.add("002212024012716360910597236567115001856"); list.add("002212024012716425010597238248882769920"); list.add("002212024012716514610597240494671388672"); list.add("002212024012716554110597241483816562688"); list.add("002212024012717091910597244914455244800"); list.add("002212024012717271210597249413297934336"); list.add("002212024012717462910597254267346472960"); list.add("002212024012718290110597264971606433792"); list.add("002212024012718313410597265609675395072"); list.add("002212024012718413610597268138068955136"); list.add("002212024012718415110597268198079160320"); list.add("002212024012718423010597268365027135488"); list.add("002212024012718524910597270960100282368"); list.add("002212024012718551610597271573975912448"); list.add("002212024012718592210597272606714187776"); list.add("002212024012719040110597273776297467904"); list.add("002212024012719215110597278265664991232"); list.add("002212024012719225210597278522501062656"); list.add("002212024012719305310597280541002108928"); list.add("002212024012719331210597281122881462272"); list.add("002212024012719341510597281388156383232"); list.add("002212024012719435210597283808590888960"); list.add("002212024012719473010597284720477569024"); list.add("002212024012720033910597288787005272064"); list.add("002212024012720051510597289187473215488"); list.add("002212024012720064710597289573229617152"); list.add("002212024012720155810597291886442905600"); list.add("002212024012720215910597293400091721728"); list.add("002212024012720252610597294265594142720"); list.add("002212024012720253410597294301088968704"); list.add("002212024012720371010597297218749063168"); list.add("002212024012720372010597297262028476416"); list.add("002212024012720423310597298575921291264"); list.add("002212024012720464910597299649147215872"); list.add("002212024012720504410597300632355803136"); list.add("002212024012720554610597301902497247232"); list.add("002212024012720581710597302532500529152"); list.add("002212024012720581910597302543529431040"); list.add("002212024012721001410597303023588569088"); list.add("002212024012721131710597306307535663104"); list.add("002212024012721164610597307187716775936"); list.add("002212024012721174710597307442223054848"); list.add("002212024012721181910597307573742698496"); list.add("002212024012721233710597308910741053440"); list.add("002212024012721241610597309071761666048"); list.add("002212024012721271910597309842625097728"); list.add("002212024012721292510597310368099237888"); list.add("002212024012721301010597310557379948544"); list.add("002212024012721335010597311478863060992"); list.add("002212024012721344210597311697992175616"); list.add("002212024012721364710597312223814516736"); list.add("002212024012721391110597312825131069440"); list.add("002212024012721423610597313684853055488"); list.add("002212024012721473910597314957136560128"); list.add("002212024012721583510597317707734810624"); list.add("002212024012722063110597319706055405568"); list.add("002212024012722072210597319918633287680"); list.add("002212024012722122010597321170080399360"); list.add("002212024012722144410597321772299538432"); list.add("002212024012722151710597321912741613568"); list.add("002212024012722155810597322085734711296"); list.add("002212024012722173010597322469148782592"); list.add("002212024012722190210597322856937193472"); list.add("002212024012722190710597322874986254336"); list.add("002212024012722203510597323245123735552"); list.add("002212024012722221710597323674210914304"); list.add("002212024012722240210597324112855265280"); list.add("002212024012722310010597325866720382976"); list.add("002212024012722314710597326065825914880"); list.add("002212024012722330410597326389311299584"); list.add("002212024012722355210597327090616832000"); list.add("002212024012722374510597327567038619648"); list.add("002212024012722384510597327818008682496"); list.add("002212024012722432410597328986820214784"); list.add("002212024012722444810597329341289234432"); list.add("002212024012722465410597329867299971072"); list.add("002212024012722555610597332142979608576"); list.add("002212024012722582510597332767729418240"); list.add("002212024012723024310597333847365013504"); list.add("002212024012723034210597334097072902144"); list.add("002212024012723042410597334273397444608"); list.add("002212024012723061010597334715584679936"); list.add("002212024012723110510597335953945808896"); list.add("002212024012723111910597336013711704064"); list.add("002212024012723134810597336638353170432"); list.add("002212024012723160810597337224759939072"); list.add("002212024012723231210597339005584793600"); list.add("002212024012723253310597339595373662208"); list.add("002212024012723301910597340795137388544"); list.add("002212024012723324310597341398638325760"); list.add("002212024012723340410597341737032450048"); list.add("002212024012723363310597342365004685312"); list.add("002212024012723363910597342388312432640"); list.add("002212024012723380010597342729653100544"); list.add("002212024012723411110597343529047814144"); list.add("002212024012723414410597343667924402176"); list.add("002212024012723451210597344540281761792"); list.add("002212024012723501510597345810729238528"); list.add("002212024012723555810597347248638173184"); list.add("002212024012723564410597347441410691072"); list.add("002212024012723592810597348130956972032"); list.add("002212024012800015510597348748590542848"); list.add("002212024012800063010597349902274465792"); list.add("002212024012800141510597351850756624384"); list.add("002212024012800164110597352462033518592"); list.add("002212024012800165810597352534803570688"); list.add("002212024012800244610597354497382449152"); list.add("002212024012800265710597355047136100352"); list.add("002212024012800280410597355327014166528"); list.add("002212024012800340310597356834569785344"); list.add("002212024012800345710597357060931543040"); list.add("002212024012800353310597357211548819456"); list.add("002212024012800430410597359103878483968"); list.add("002212024012800463110597359972840312832"); list.add("002212024012800572410597362709962285056"); list.add("002212024012800574710597362805259489280"); list.add("002212024012800583410597363001914654720"); list.add("002212024012801012810597363734158409728"); list.add("002212024012801071710597365195836575744"); list.add("002212024012801133710597366790051684352"); list.add("002212024012801165610597367627425640448"); list.add("002212024012801183910597368056747778048"); list.add("002212024012801195910597368394668699648"); list.add("002212024012801235810597369395970461696"); list.add("002212024012801285010597370622415568896"); list.add("002212024012801302410597371015573889024"); list.add("002212024012801312710597371279445762048"); list.add("002212024012801463810597375099118411776"); list.add("002212024012801472510597375298664038400"); list.add("002212024012801523910597376613610881024"); list.add("002212024012801533010597376827241394176"); list.add("002212024012801560010597377457425047552"); list.add("002212024012801560610597377480805994496"); list.add("002212024012801583810597378118050869248"); list.add("002212024012802011510597378778804744192"); list.add("002212024012802085410597380702543409152"); list.add("002212024012802093410597380872348307456"); list.add("002212024012802170110597382744904204288"); list.add("002212024012802251910597384836851920896"); list.add("002212024012802253710597384911057702912"); list.add("002212024012802273410597385401658630144"); list.add("002212024012802331610597386833463443456"); list.add("002212024012802350410597387290423455744"); list.add("002212024012802382210597388118461939712"); list.add("002212024012802390410597388293969408000"); list.add("002212024012802422110597389120836067328"); list.add("002212024012802503010597391173941948416"); list.add("002212024012802570210597392815053201408"); list.add("002212024012803024510597394256747155456"); list.add("002212024012803040710597394597443108864"); list.add("002212024012803043610597394718922735616"); list.add("002212024012803072610597395434499330048"); list.add("002212024012803212110597398936409694208"); list.add("002212024012803341310597402175387430912"); list.add("002212024012803373810597403032619438080"); list.add("002212024012803503410597406289581408256"); list.add("002212024012803511310597406452385640448"); list.add("002212024012803555210597407622424330240"); list.add("002212024012804033510597409566417899520"); list.add("002212024012804154610597412629314707456"); list.add("002212024012804174710597413136074711040"); list.add("002212024012804281010597415751542202368"); list.add("002212024012804412210597419071883378688"); list.add("002212024012804450110597419993417506816"); list.add("002212024012805233910597429713907544064"); list.add("002212024012805341610597432384324431872"); list.add("002212024012805443010597434959253147648"); list.add("002212024012806204810597444098051657728"); list.add("002212024012806563210597453089993519104"); list.add("002212024012807063610597455621616685056"); list.add("002212024012807342210597462610437795840"); list.add("002212024012808434010597480048151658496"); list.add("002212024012808542310597482746052804608"); list.add("002212024012808550010597482903381147648"); list.add("002212024012809470710597496019417399296"); list.add("002212024012809521310597497302269423616"); list.add("002212024012809583410597498898771668992"); list.add("002212024012810051710597500587645763584"); list.add("002212024012810123110597502408593334272"); list.add("002212024012810202010597504376411869184"); list.add("002212024012810221110597504843354533888"); list.add("002212024012810232210597505140123365376"); list.add("002212024012810284810597506508653416448"); list.add("002212024012810350510597508086645592064"); list.add("002212024012810485610597511572298027008"); list.add("002212024012811154210597518312261459968"); list.add("002212024012811213110597519774317445120"); list.add("002212024012811363210597523555009318912"); list.add("002212024012811531310597527750741786624"); list.add("002212024012811574710597528899101294592"); list.add("002212024012812062410597531067665674240"); list.add("002212024012812075710597531461047672832"); list.add("002212024012812102010597532059940069376"); list.add("002212024012812280010597536505777295360"); list.add("002212024012812294310597536936748744704"); list.add("002212024012812310510597537278986153984"); list.add("002212024012812344510597538205419786240"); list.add("002212024012812411610597539845590843392"); list.add("002212024012812415710597540017177788416"); list.add("002212024012812474010597541452983214080"); list.add("002212024012812505910597542287943000064"); list.add("002212024012812514610597542484842868736"); list.add("002212024012812534010597542965869481984"); list.add("002212024012812564110597543724703449088"); list.add("002212024012813000210597544564979761152"); list.add("002212024012813005110597544770318430208"); list.add("002212024012813011510597544874529460224"); list.add("002212024012813040910597545602838253568"); list.add("002212024012813045110597545779980488704"); list.add("002212024012813093610597546974379888640"); list.add("002212024012813095210597547040320610304"); list.add("002212024012813105210597547294130634752"); list.add("002212024012813193610597549490528256000"); list.add("002212024012813202310597549687616425984"); list.add("002212024012813220910597550130398404608"); list.add("002212024012813222110597550184475852800"); list.add("002212024012813381710597554190958919680"); list.add("002212024012813391510597554437008228352"); list.add("002212024012813411010597554916084764672"); list.add("002212024012814002010597559741379858432"); list.add("002212024012814052710597561030480322560"); list.add("002212024012814091510597561985920761856"); list.add("002212024012814133210597563062148780032"); list.add("002212024012814155210597563652148785152"); list.add("002212024012814161610597563750895439872"); list.add("002212024012814172010597564020008353792"); list.add("002212024012814200710597564719225786368"); list.add("002212024012814270010597566451716608000"); list.add("002212024012814294710597567152290590720"); list.add("002212024012814314610597567653270196224"); list.add("002212024012814335010597568171641532416"); list.add("002212024012814341310597568267395993600"); list.add("002212024012814344210597568389359464448"); list.add("002212024012814355410597568693882474496"); list.add("002212024012814412610597570086629703680"); list.add("002212024012814413910597570137656303616"); list.add("002212024012814454510597571169883086848"); list.add("002212024012814470410597571502253600768"); list.add("002212024012814473610597571637530714112"); list.add("002212024012814491410597572048113750016"); list.add("002212024012814513510597572640805163008"); list.add("002212024012814530910597573032255848448"); list.add("002212024012814593010597574631652528128"); list.add("002212024012815013510597575155606245376"); list.add("002212024012815045410597575989119537152"); list.add("002212024012815045610597575997974740992"); list.add("002212024012815073610597576670534324224"); list.add("002212024012815084710597576966599778304"); list.add("002212024012815114710597577723485212672"); list.add("002212024012815135410597578253238398976"); list.add("002212024012815230310597580558570475520"); list.add("002212024012815271210597581602640789504"); list.add("002212024012815271910597581633008553984"); list.add("002212024012815290210597582063832260608"); list.add("002212024012815340510597583336141135872"); list.add("002212024012815360810597583852283797504"); list.add("002212024012815401510597584886422691840"); list.add("002212024012815455110597586293987438592"); list.add("002212024012816061910597591448355041280"); list.add("002212024012816151610597593700650315776"); list.add("002212024012816161410597593942668017664"); list.add("002212024012816220110597595397526290432"); list.add("002212024012816233910597595809864122368"); list.add("002212024012816312110597597747815817216"); list.add("002212024012816360910597598952048095232"); list.add("002212024012816403110597600052801925120"); list.add("002212024012817044710597606158441992192"); list.add("002212024012817155710597608968575143936"); list.add("002212024012817182110597609575329759232"); list.add("002212024012817264510597611687193047040"); list.add("002212024012817312410597612859079122944"); list.add("002212024012817381010597614560343949312"); list.add("002212024012818015810597620551778205696"); list.add("002212024012818252510597626452591894528"); list.add("002212024012818262810597626717637804032"); list.add("002212024012818330610597628384057430016"); list.add("002212024012818401410597630182395891712"); list.add("002212024012818430310597630889216045056"); list.add("002212024012818512510597632994301353984"); list.add("002212024012819044410597636344786575360"); list.add("002212024012819192710597640048187658240"); list.add("002212024012819325110597643423270658048"); list.add("002212024012819401310597645275716505600"); list.add("002212024012819431210597646028231237632"); list.add("002212024012819445610597646463652458496"); list.add("002212024012819582710597649865326297088"); list.add("002212024012820000010597650256184037376"); list.add("002212024012820201310597655343630548992"); list.add("002212024012820312510597658160362508288"); list.add("002212024012820475110597662297665957888"); list.add("002212024012820561710597664418805182464"); list.add("002212024012820562110597664437457244160"); list.add("002212024012820583010597664975923568640"); list.add("002212024012820585110597665065385005056"); list.add("002212024012821001110597665399293546496"); list.add("002212024012821001910597665434822967296"); list.add("002212024012821003410597665495031054336"); list.add("002212024012821004810597665556701052928"); list.add("002212024012821011110597665653871509504"); list.add("002212024012821015510597665837834686464"); list.add("002212024012821020210597665864189566976"); list.add("002212024012821040810597666393434742784"); list.add("002212024012821042710597666473210716160"); list.add("002212024012821113810597668282814631936"); list.add("002212024012821150210597669136134688768"); list.add("002212024012821171210597669681877581824"); list.add("002212024012821234510597671330871136256"); list.add("002212024012821300910597672941928697856"); list.add("002212024012821322110597673493423128576"); list.add("002212024012821494110597677858699542528"); list.add("002212024012821540810597678976394006528"); list.add("002212024012821554610597679386575966208"); list.add("002212024012821571310597679752381661184"); list.add("002212024012822011210597680754122915840"); list.add("002212024012822080110597682470034202624"); list.add("002212024012822190310597685248266166272"); list.add("002212024012822233410597686384620068864"); list.add("002212024012822234210597686416704884736"); list.add("002212024012822234310597686422826475520"); list.add("002212024012822242110597686581893394432"); list.add("002212024012822254910597686949618581504"); list.add("002212024012822260310597687007606009856"); list.add("002212024012822271910597687327942594560"); list.add("002212024012822291410597687810549211136"); list.add("002212024012822294610597687944115253248"); list.add("002212024012822295510597687980378353664"); list.add("002212024012822334110597688931472211968"); list.add("002212024012822394410597690454371631104"); list.add("002212024012822430910597691312139866112"); list.add("002212024012822431910597691352522096640"); list.add("002212024012822463110597692159111921664"); list.add("002212024012822512610597693397438763008"); list.add("002212024012822540510597694066029096960"); list.add("002212024012822572910597694920975011840"); list.add("002212024012823014410597695988126613504"); list.add("002212024012823044210597696736299175936"); list.add("002212024012823090910597697857042141184"); list.add("002212024012823231710597701412179574784"); list.add("002212024012823243610597701745775575040"); list.add("002212024012823250010597701842593243136"); list.add("002212024012823290810597702886199304192"); list.add("002212024012823370010597704866103910400"); list.add("002212024012823372910597704985993404416"); list.add("002212024012823375610597705100910071808"); list.add("002212024012823511910597708466055184384"); list.add("002212024012823545010597709351174963200"); list.add("002212024012900031510597711471493115904"); list.add("002212024012900070010597712412917223424"); list.add("002212024012900084110597712839421108224"); list.add("002212024012900120110597713675630796800"); list.add("002212024012900191910597715514335752192"); list.add("002212024012900215610597716171807907840"); list.add("002212024012900252010597717026238562304"); list.add("002212024012900282210597717789290913792"); list.add("002212024012900360910597719748565331968"); list.add("002212024012900362610597719821107691520"); list.add("002212024012900370610597719987196751872"); list.add("002212024012900421210597721274069123072"); list.add("002212024012900435910597721720102965248"); list.add("002212024012900483110597722863703625728"); list.add("002212024012900554010597724662754344960"); list.add("002212024012900565010597724954069729280"); list.add("002212024012900570210597725004836462592"); list.add("002212024012900585610597725482907246592"); list.add("002212024012901005310597725975110283264"); list.add("002212024012901094610597728208403734528"); list.add("002212024012901123510597728920533639168"); list.add("002212024012901130610597729049609150464"); list.add("002212024012901230410597731558459527168"); list.add("002212024012901321810597733882152181760"); list.add("002212024012901340210597734315184709632"); list.add("002212024012901385010597735526791204864"); list.add("002212024012901392710597735678457040896"); list.add("002212024012901411510597736133211095040"); list.add("002212024012901453010597737203396308992"); list.add("002212024012901485910597738077403914240"); list.add("002212024012901533810597739247350489088"); list.add("002212024012901554810597739793807462400"); list.add("002212024012901582310597740445457620992"); list.add("002212024012901591810597740675532152832"); list.add("002212024012902020210597741361188732928"); list.add("002212024012902031110597741653538807808"); list.add("002212024012902105210597743586719502336"); list.add("002212024012902132810597744242495225856"); list.add("002212024012902305110597748614485106688"); list.add("002212024012902305810597748642832838656"); list.add("002212024012902442310597752022715396096"); list.add("002212024012902495210597753401937457152"); list.add("002212024012902555310597754913572319232"); list.add("002212024012902574810597755398077345792"); list.add("002212024012902575710597755435369517056"); list.add("002212024012903143510597759623109660672"); list.add("002212024012903195510597760963342360576"); list.add("002212024012903215810597761477241380864"); list.add("002212024012903451410597767333787955200"); list.add("002212024012903500910597768573720842240"); list.add("002212024012903525310597769258317316096"); list.add("002212024012903581810597770621501689856"); list.add("002212024012904273510597777993891254272"); list.add("002212024012905111610597788986580365312"); list.add("002212024012905375510597795690656399360"); list.add("002212024012906131010597804563232555008"); list.add("002212024012906480010597813328265498624"); list.add("002212024012907012810597816718067175424"); list.add("002212024012907085610597818598344785920"); list.add("002212024012907161810597820450927767552"); list.add("002212024012907381510597825973123403776"); list.add("002212024012907430710597827201098141696"); list.add("002212024012908080010597833463833157632"); list.add("002212024012908381410597841069844365312"); list.add("002212024012908423410597842158753763328"); list.add("002212024012908431910597842348037697536"); list.add("002212024012908441510597842582621769728"); list.add("002212024012908484410597843711392870400"); list.add("002212024012909074110597848481004384256"); list.add("002212024012909104410597849250721071104"); list.add("002212024012909320210597854609750708224"); list.add("002212024012909502110597859220994752512"); list.add("002212024012909561410597860699619946496"); list.add("002212024012909592510597861499523977216"); list.add("002212024012910061010597863201335271424"); list.add("002212024012910080110597863664665030656"); list.add("002212024012910095810597864156030164992"); list.add("002212024012910320810597869734622748672"); list.add("002212024012910374210597871134595239936"); list.add("002212024012910393410597871605431226368"); list.add("002212024012910440510597872740427726848"); list.add("002212024012910483110597873855346073600"); list.add("002212024012910570210597876001862807552"); list.add("002212024012910594210597876670285914112"); list.add("002212024012911413310597887205493166080"); list.add("002212024012911433310597887707229564928"); list.add("002212024012911502810597889446268727296"); list.add("002212024012911571210597891139832852480"); list.add("002212024012912004910597892050431356928"); list.add("002212024012912004910597892053711806464"); list.add("002212024012912093810597894272762359808"); list.add("002212024012912150710597895649838366720"); list.add("002212024012912203410597897022686978048"); list.add("002212024012912211310597897184937758720"); list.add("002212024012912264610597898580874096640"); list.add("002212024012912290810597899179072106496"); list.add("002212024012912321910597899980716032000"); list.add("002212024012912354410597900840479215616"); list.add("002212024012912452710597903286301351936"); list.add("002212024012912464310597903603252158464"); list.add("002212024012912493510597904323791806464"); list.add("002212024012912504010597904597680222208"); list.add("002212024012912545010597905643969798144"); list.add("002212024012913022510597907553470251008"); list.add("002212024012913024810597907650650824704"); list.add("002212024012913033210597907833783324672"); list.add("002212024012913131110597910262412726272"); list.add("002212024012913131910597910295978389504"); list.add("002212024012913155610597910954974851072"); list.add("002212024012913173510597911370592423936"); list.add("002212024012913175310597911448508035072"); list.add("002212024012913181210597911525628039168"); list.add("002212024012913195010597911937899917312"); list.add("002212024012913201610597912045779824640"); list.add("002212024012913244110597913156074184704"); list.add("002212024012913272310597913838133047296"); list.add("002212024012913280910597914028747386880"); list.add("002212024012913343210597915634683473920"); list.add("002212024012913385410597916736587218944"); list.add("002212024012913391110597916805055750144"); list.add("002212024012913392910597916882600144896"); list.add("002212024012913411210597917312405581824"); list.add("002212024012913424710597917712727236608"); list.add("002212024012913435610597918000461213696"); list.add("002212024012913504310597919707693936640"); list.add("002212024012913540110597920539313164288"); list.add("002212024012913583710597921698839736320"); list.add("002212024012913591510597921856740519936"); list.add("002212024012914002910597922165507739648"); list.add("002212024012914045110597923266450780160"); list.add("002212024012914090410597924328429064192"); list.add("002212024012914121510597925130018668544"); list.add("002212024012914191410597926887289614336"); list.add("002212024012914252010597928419553288192"); list.add("002212024012914262910597928712123318272"); list.add("002212024012914270310597928853654462464"); list.add("002212024012914290510597929362715299840"); list.add("002212024012914305710597929833377566720"); list.add("002212024012914343610597930753301884928"); list.add("002212024012914351610597930922433720320"); list.add("002212024012914404910597932316296048640"); list.add("002212024012914465710597933861142097920"); list.add("002212024012914473610597934022849933312"); list.add("002212024012914484310597934304187514880"); list.add("002212024012914503410597934770395901952"); list.add("002212024012914535010597935594823737344"); list.add("002212024012914590610597936918127448064"); list.add("002212024012915023510597937795844931584"); list.add("002212024012915053210597938537978753024"); list.add("002212024012915071710597938977789276160"); list.add("002212024012915080610597939182949462016"); list.add("002212024012915094410597939593290821632"); list.add("002212024012915131310597940470680481792"); list.add("002212024012915194510597942114304524288"); list.add("002212024012915223710597942836868771840"); list.add("002212024012915264910597943895638921216"); list.add("002212024012915273910597944105068277760"); list.add("002212024012915303710597944851456331776"); list.add("002212024012915391110597947004077203456"); list.add("002212024012915430010597947966259830784"); list.add("002212024012915455910597948716321955840"); list.add("002212024012915522710597950344218914816"); list.add("002212024012915544110597950905284141056"); list.add("002212024012915562110597951327729709056"); list.add("002212024012916002110597952333960015872"); list.add("002212024012916081110597954302389260288"); list.add("002212024012916113110597955143877914624"); list.add("002212024012916114310597955192914030592"); list.add("002212024012916182210597956866724462592"); list.add("002212024012916233410597958176088440832"); list.add("002212024012916251810597958610827862016"); list.add("002212024012916254310597958714892574720"); list.add("002212024012916260010597958787383693312"); list.add("002212024012916311810597960119867326464"); list.add("002212024012916330210597960556914618368"); list.add("002212024012916462410597963921104957440"); list.add("002212024012916561710597966407561211904"); list.add("002212024012916563110597966467242602496"); list.add("002212024012916570710597966619483701248"); list.add("002212024012917045610597968584454791168"); list.add("002212024012917195510597972357256757248"); list.add("002212024012917215710597972867999322112"); list.add("002212024012917251010597973676620361728"); list.add("002212024012917394910597977363074695168"); list.add("002212024012918014210597982873057075200"); list.add("002212024012918133810597985876066947072"); list.add("002212024012918195010597987435429482496"); list.add("002212024012918222710597988093983985664"); list.add("002212024012918243110597988611328438272"); list.add("002212024012918320910597990535928745984"); list.add("002212024012918323210597990630309076992"); list.add("002212024012918375210597991973375447040"); list.add("002212024012918403910597992672972976128"); list.add("002212024012918410810597992793559113728"); list.add("002212024012918414310597992943367892992"); list.add("002212024012918522710597995642655469568"); list.add("002212024012918580610597997065073979392"); list.add("002212024012918595510597997522194395136"); list.add("002212024012919004210597997720457129984"); list.add("002212024012919170410598001838415405056"); list.add("002212024012919245410598003807620161536"); list.add("002212024012919283010598004715548930048"); list.add("002212024012919324310598005774578221056"); list.add("002212024012919342610598006208298614784"); list.add("002212024012919362410598006701412933632"); list.add("002212024012919554510598011572163313664"); list.add("002212024012920044610598013844085141504"); list.add("002212024012920114810598015612815257600"); list.add("002212024012920255910598019181708980224"); list.add("002212024012920304610598020386433187840"); list.add("002212024012920374510598022140934860800"); list.add("002212024012920533810598026138343022592"); list.add("002212024012920550210598026491285315584"); list.add("002212024012920594510598027680189607936"); list.add("002212024012921010410598028010294554624"); list.add("002212024012921055610598029235712815104"); list.add("002212024012921061110598029297859817472"); list.add("002212024012921080610598029781825957888"); list.add("002212024012921093010598030133923016704"); list.add("002212024012921110810598030542352265216"); list.add("002212024012921134210598031190951047168"); list.add("002212024012921235110598033745128562688"); list.add("002212024012921235910598033775946723328"); list.add("002212024012921253910598034198275387392"); list.add("002212024012921263110598034414784204800"); list.add("002212024012921285710598035026891911168"); list.add("002212024012921343510598036443235180544"); list.add("002212024012921392910598037680278200320"); list.add("002212024012921415110598038271868190720"); list.add("002212024012921473410598039714544316416"); list.add("002212024012921560410598041852079759360"); list.add("002212024012921594810598042790820319232"); list.add("002212024012922011210598043144207859712"); list.add("002212024012922043810598044008501305344"); list.add("002212024012922124110598046033490468864"); list.add("002212024012922170910598047156579078144"); list.add("002212024012922212610598048236434223104"); list.add("002212024012922212810598048243179675648"); list.add("002212024012922220610598048403760492544"); list.add("002212024012922223710598048532554985472"); list.add("002212024012922244610598049074085494784"); list.add("002212024012922271310598049690812035072"); list.add("002212024012922275410598049863552557056"); list.add("002212024012922300910598050429953888256"); list.add("002212024012922301210598050441531338752"); list.add("002212024012922301510598050452168597504"); list.add("002212024012922330410598051163439632384"); list.add("002212024012922400010598052907160825856"); list.add("002212024012922400310598052918317010944"); list.add("002212024012922423810598053568608735232"); list.add("002212024012922443710598054068292513792"); list.add("002212024012922484310598055102127525888"); list.add("002212024012922513610598055828462084096"); list.add("002212024012922593410598057831519617024"); list.add("002212024012923024110598058615452717056"); list.add("002212024012923091210598060255587168256"); list.add("002212024012923112010598060793249755136"); list.add("002212024012923131810598061286240907264"); list.add("002212024012923155310598061940150214656"); list.add("002212024012923155810598061961026719744"); list.add("002212024012923194410598062908630200320"); list.add("002212024012923261410598064541474332672"); list.add("002212024012923305210598065707086622720"); list.add("002212024012923315110598065957644152832"); list.add("002212024012923333010598066373588811776"); list.add("002212024012923371710598067325188583424"); list.add("002212024012923415910598068506556248064"); list.add("002212024012923433110598068891398529024"); list.add("002212024012923470610598069794537566208"); list.add("002212024012923480810598070054694002688"); list.add("002212024012923491810598070347188088832"); list.add("002212024012923561310598072088526712832"); list.add("002212024012923565810598072277602918400"); list.add("002212024013000040410598074064406683648"); list.add("002212024013000125310598076284068524032"); list.add("002212024013000172310598077416623751168"); list.add("002212024013000183410598077714548486144"); list.add("002212024013000222710598078688208236544"); list.add("002212024013000255310598079554812633088"); list.add("002212024013000331510598081407184384000"); list.add("002212024013000332710598081458265640960"); list.add("002212024013000412210598083449312342016"); list.add("002212024013000500010598085624415481856"); list.add("002212024013000502510598085726971047936"); list.add("002212024013000570010598087385197522944"); list.add("002212024013001041010598089187107266560"); list.add("002212024013001082410598090253329604608"); list.add("002212024013001084010598090320717901824"); list.add("002212024013001103210598090791015034880"); list.add("002212024013001125610598091393643970560"); list.add("002212024013001213710598093581302231040"); list.add("002212024013001265210598094903163666432"); list.add("002212024013001350010598096948121395200"); list.add("002212024013001532210598101569828646912"); list.add("002212024013001540810598101761802461184"); list.add("002212024013001590210598102995091767296"); list.add("002212024013002001510598103301031325696"); list.add("002212024013002072510598105107943759872"); list.add("002212024013002101910598105837254987776"); list.add("002212024013002123610598106411095650304"); list.add("002212024013002190110598108024000061440"); list.add("002212024013002212510598108630571016192"); list.add("002212024013002262310598109880327172096"); list.add("002212024013002310310598111051774779392"); list.add("002212024013002335410598111772630450176"); list.add("002212024013002401410598113365683695616"); list.add("002212024013002423110598113939257806848"); list.add("002212024013002431310598114115375177728"); list.add("002212024013002505010598116033371574272"); list.add("002212024013002505410598116048578637824"); list.add("002212024013002512910598116196842598400"); list.add("002212024013002533410598116720028860416"); list.add("002212024013002594210598118262954631168"); list.add("002212024013003030810598119127386533888"); list.add("002212024013003130110598121616371982336"); list.add("002212024013003144810598122063075201024"); list.add("002212024013003244210598124553630388224"); list.add("002212024013003252810598124747394215936"); list.add("002212024013003332710598126755536687104"); list.add("002212024013003541910598132009885941760"); list.add("002212024013004124910598136664165314560"); list.add("002212024013004433610598144410992455680"); list.add("002212024013005401710598158673546944512"); list.add("002212024013006044510598164833946152960"); list.add("002212024013006422010598174292807987200"); list.add("002212024013006555510598177711249530880"); list.add("002212024013007470210598190573237399552"); list.add("002212024013007565610598193065535213568"); list.add("002212024013008451310598205216801026048"); list.add("002212024013009103910598211617347186688"); list.add("002212024013009283410598216124883275776"); list.add("002212024013009284310598216163763007488"); list.add("002212024013009360810598218029858017280"); list.add("002212024013009373910598218409644519424"); list.add("002212024013009473510598220911387979776"); list.add("002212024013010162210598228155527725056"); list.add("002212024013010273310598230966786052096"); list.add("002212024013010572610598238488936935424"); list.add("002212024013011044210598240318336786432"); list.add("002212024013011113710598242056546799616"); list.add("002212024013011165810598243403906785280"); list.add("002212024013011291210598246482690322432"); list.add("002212024013011292910598246555824865280"); list.add("002212024013011295610598246666055979008"); list.add("002212024013011335910598247687967989760"); list.add("002212024013011342010598247776274198528"); list.add("002212024013011374510598248636439334912"); list.add("002212024013011390210598248959039422464"); list.add("002212024013011413210598249588926541824"); list.add("002212024013011425710598249943899398144"); list.add("002212024013011475810598251206209093632"); list.add("002212024013011484210598251392499716096"); list.add("002212024013011501410598251777704800256"); list.add("002212024013011513410598252111017648128"); list.add("002212024013012083310598256387609698304"); list.add("002212024013012104310598256930701586432"); list.add("002212024013012120910598257290028240896"); list.add("002212024013012122810598257371153838080"); list.add("002212024013012143910598257920773898240"); list.add("002212024013012242010598260358562918400"); list.add("002212024013012280410598261296848527360"); list.add("002212024013012282310598261378340827136"); list.add("002212024013012283210598261414616358912"); list.add("002212024013012283910598261445716455424"); list.add("002212024013012320610598262311858679808"); list.add("002212024013012393410598264192109821952"); list.add("002212024013012514110598267239589572608"); list.add("002212024013012563110598268458669707264"); list.add("002212024013013061410598270901147246592"); list.add("002212024013013064710598271039882240000"); list.add("002212024013013104110598272022850834432"); list.add("002212024013013105210598272067978907648"); list.add("002212024013013125710598272593677365248"); list.add("002212024013013162310598273457460211712"); list.add("002212024013013173010598273736802934784"); list.add("002212024013013200210598274373497217024"); list.add("002212024013013235310598275346102140928"); list.add("002212024013013254410598275810918232064"); list.add("002212024013013275610598276362476441600"); list.add("002212024013013280910598276418438000640"); list.add("002212024013013290710598276659716923392"); list.add("002212024013013312010598277217782202368"); list.add("002212024013013355210598278360018579456"); list.add("002212024013013355510598278370920587264"); list.add("002212024013013392810598279266846507008"); list.add("002212024013013453710598280812039421952"); list.add("002212024013013471210598281211817480192"); list.add("002212024013013502610598282027535265792"); list.add("002212024013013515210598282385553186816"); list.add("002212024013013582010598284013332197376"); list.add("002212024013013583610598284081038626816"); list.add("002212024013014031610598285253930528768"); list.add("002212024013014031810598285263055974400"); list.add("002212024013014041510598285502514974720"); list.add("002212024013014081610598286511864287232"); list.add("002212024013014082510598286549638840320"); list.add("002212024013014150810598288240977211392"); list.add("002212024013014194710598289413998227456"); list.add("002212024013014280310598291492511244288"); list.add("002212024013014330210598292746373787648"); list.add("002212024013014393910598294411116007424"); list.add("002212024013014403310598294637407096832"); list.add("002212024013014404410598294684820172800"); list.add("002212024013014445210598295723054993408"); list.add("002212024013014475910598296508030607360"); list.add("002212024013014512410598297368819228672"); list.add("002212024013014583410598299170444242944"); list.add("002212024013014595210598299500413841408"); list.add("002212024013015002410598299631759482880"); list.add("002212024013015021110598300081749745664"); list.add("002212024013015022710598300150092738560"); list.add("002212024013015104710598302245602586624"); list.add("002212024013015112110598302389243346944"); list.add("002212024013015114510598302491340443648"); list.add("002212024013015181310598304118204624896"); list.add("002212024013015284110598306749921718272"); list.add("002212024013015320810598307619915296768"); list.add("002212024013015354710598308538647564288"); list.add("002212024013015384010598309263601131520"); list.add("002212024013015393510598309495263449088"); list.add("002212024013015480310598311624917110784"); list.add("002212024013015562410598313726789378048"); list.add("002212024013015565310598313848005292032"); list.add("002212024013016000410598314649342799872"); list.add("002212024013016035110598315600952168448"); list.add("002212024013016063010598316267939704832"); list.add("002212024013016063710598316297931448320"); list.add("002212024013016144910598318360680591360"); list.add("002212024013016224610598320361462145024"); list.add("002212024013016290010598321931536031744"); list.add("002212024013016325710598322926061039616"); list.add("002212024013016364610598323884887322624"); list.add("002212024013016382610598324302757339136"); list.add("002212024013016462110598326296237158400"); list.add("002212024013016470710598326489292075008"); list.add("002212024013016481210598326760233504768"); list.add("002212024013016551010598328517033713664"); list.add("002212024013017005010598329941921984512"); list.add("002212024013017154510598333696965963776"); list.add("002212024013017194910598334719709884416"); list.add("002212024013017273610598336677910138880"); list.add("002212024013017434510598340741246996480"); list.add("002212024013018164810598349058047606784"); list.add("002212024013018292410598352231122022400"); list.add("002212024013018471210598356707665653760"); list.add("002212024013018473610598356810153197568"); list.add("002212024013019113110598362830490955776"); list.add("002212024013019142610598363563263930368"); list.add("002212024013019155410598363931206348800"); list.add("002212024013019190210598364719532879872"); list.add("002212024013019194910598364916913262592"); list.add("002212024013019224510598365654916476928"); list.add("002212024013019245410598366197149061120"); list.add("002212024013019283610598367127729344512"); list.add("002212024013019345210598368703434444800"); list.add("002212024013019350410598368754281992192"); list.add("002212024013019354810598368941010849792"); list.add("002212024013019404710598370194501128192"); list.add("002212024013019450010598371253656317952"); list.add("002212024013019494310598372443776339968"); list.add("002212024013019501510598372578448207872"); list.add("002212024013019510710598372796333928448"); list.add("002212024013019513910598372928181366784"); list.add("002212024013019580510598374548280324096"); list.add("002212024013020013510598375427374690304"); list.add("002212024013020032210598375876064555008"); list.add("002212024013020053110598376419216011264"); list.add("002212024013020150110598378807347646464"); list.add("002212024013020151110598378853354168320"); list.add("002212024013020165710598379297781444608"); list.add("002212024013020364710598384285549277184"); list.add("002212024013020393210598384979701391360"); list.add("002212024013020440110598386108326481920"); list.add("002212024013020515910598388110929870848"); list.add("002212024013020573910598389539989499904"); list.add("002212024013021093910598392558625619968"); list.add("002212024013021103710598392803640082432"); list.add("002212024013021112110598392987731193856"); list.add("002212024013021121310598393204023599104"); list.add("002212024013021125510598393381283377152"); list.add("002212024013021184010598394825850839040"); list.add("002212024013021280810598397210352930816"); list.add("002212024013021300410598397695433732096"); list.add("002212024013021310810598397964151255040"); list.add("002212024013021352110598399026627002368"); list.add("002212024013021353910598399103301709824"); list.add("002212024013021410310598400461162504192"); list.add("002212024013021440110598401208779894784"); list.add("002212024013021500510598402735537393664"); list.add("002212024013021503310598402852109250560"); list.add("002212024013021521010598403258593193984"); list.add("002212024013021594210598405151753859072"); list.add("002212024013022022010598405816530608128"); list.add("002212024013022161010598409297714950144"); list.add("002212024013022184110598409930601230336"); list.add("002212024013022193910598410175750344704"); list.add("002212024013022203410598410404825841664"); list.add("002212024013022251910598411601837387776"); list.add("002212024013022264910598411977856741376"); list.add("002212024013022273210598412159340765184"); list.add("002212024013022293010598412653858496512"); list.add("002212024013022304010598412945614282752"); list.add("002212024013022321010598413322694692864"); list.add("002212024013022400910598415331816640512"); list.add("002212024013022412210598415639207325696"); list.add("002212024013022413510598415694454190080"); list.add("002212024013022554710598419268798115840"); list.add("002212024013022561010598419365086089216"); list.add("002212024013022562310598419418717097984"); list.add("002212024013022563710598419475462041600"); list.add("002212024013022564510598419511992758272"); list.add("002212024013022572010598419657852071936"); list.add("002212024013022573610598419725081034752"); list.add("002212024013022592410598420176770641920"); list.add("002212024013022595310598420298471751680"); list.add("002212024013023062110598421927566757888"); list.add("002212024013023080910598422380575301632"); list.add("002212024013023132710598423714338271232"); list.add("002212024013023185010598425070211313664"); list.add("002212024013023215810598425855797866496"); list.add("002212024013023295010598427835536089088"); list.add("002212024013023342410598428984955740160"); list.add("002212024013023393110598430275080994816"); list.add("002212024013023410110598430652454920192"); list.add("002212024013023433610598431299297292288"); list.add("002212024013023472010598432239306240000"); list.add("002212024013023500610598432937025564672"); list.add("002212024013023503610598433063367475200"); list.add("002212024013023512910598433283039404032"); list.add("002212024013023521310598433470756028416"); list.add("002212024013023522210598433509064683520"); list.add("002212024013100011110598435724507467776"); list.add("002212024013100114210598438372139442176"); list.add("002212024013100151010598439243900911616"); list.add("002212024013100154610598439394091454464"); list.add("002212024013100211410598440773268717568"); list.add("002212024013100212410598440813757046784"); list.add("002212024013100295110598442939146555392"); list.add("002212024013100305410598443204572176384"); list.add("002212024013100353210598444372276412416"); list.add("002212024013100361610598444555236147200"); list.add("002212024013100401510598445556378763264"); list.add("002212024013100430610598446273917706240"); list.add("002212024013100464410598447187626823680"); list.add("002212024013100595710598450513323220992"); list.add("002212024013101004110598450698557718528"); list.add("002212024013101020310598451045559791616"); list.add("002212024013101040310598451547505819648"); list.add("002212024013101054210598451961956495360"); list.add("002212024013101111610598453364246974464"); list.add("002212024013101165010598454765289336832"); list.add("002212024013101200710598455589270822912"); list.add("002212024013101265210598457287489884160"); list.add("002212024013101322710598458693174046720"); list.add("002212024013101383610598460241843412992"); list.add("002212024013101424510598461284177276928"); list.add("002212024013101463310598462244115050496"); list.add("002212024013101472310598462452691476480"); list.add("002212024013101505610598463343766265856"); list.add("002212024013101565110598464836619055104"); list.add("002212024013101582110598465213847937024"); list.add("002212024013101584410598465310578429952"); list.add("002212024013101595610598465608900505600"); list.add("002212024013102100410598468159808057344"); list.add("002212024013102210910598470949462736896"); list.add("002212024013102225010598471375162535936"); list.add("002212024013102245410598471895323164672"); list.add("002212024013102261210598472220605558784"); list.add("002212024013102373610598475089720995840"); list.add("002212024013102432310598476546461003776"); list.add("002212024013102434310598476629299015680"); list.add("002212024013102443810598476858292092928"); list.add("002212024013102473410598477596137988096"); list.add("002212024013102542210598479310358523904"); list.add("002212024013103033010598481609300504576"); list.add("002212024013103111010598483538840903680"); list.add("002212024013103125510598483979403005952"); list.add("002212024013103155610598484737355071488"); list.add("002212024013103180710598485284467109888"); list.add("002212024013103220810598486294859706368"); list.add("002212024013103273010598487647237169152"); list.add("002212024013103282710598487888036192256"); list.add("002212024013103315010598488736579059712"); list.add("002212024013104031110598496628345499648"); list.add("002212024013104091510598498154955354112"); list.add("002212024013104115810598498836339843072"); list.add("002212024013104173510598500253189382144"); list.add("002212024013104185410598500581244129280"); list.add("002212024013104231110598501660880977920"); list.add("002212024013104290110598503129850703872"); list.add("002212024013105021810598511503248142336"); list.add("002212024013105303310598518615588601856"); list.add("002212024013105515610598523995198717952"); list.add("002212024013106135410598529524326936576"); list.add("002212024013106252410598532418434240512"); list.add("002212024013106485410598538330720964608"); list.add("002212024013106505910598538854203047936"); list.add("002212024013107014510598541565904646144"); list.add("002212024013107050710598542411357843456"); list.add("002212024013107060110598542638106128384"); list.add("002212024013107114910598544099643109376"); list.add("002212024013107373610598550585650974720"); list.add("002212024013107475210598553172020916224"); list.add("002212024013107560610598555242083389440"); list.add("002212024013108194610598561197507567616"); list.add("002212024013108484410598568488644890624"); list.add("002212024013109062810598572951758303232"); list.add("002212024013109130710598574622770556928"); list.add("002212024013109294910598578826822758400"); list.add("002212024013109323110598579505829240832"); list.add("002212024013109341510598579941235933184"); list.add("002212024013109361210598580435874574336"); list.add("002212024013109434210598582321370497024"); list.add("002212024013109440110598582402798714880"); list.add("002212024013109545510598585145834168320"); list.add("002212024013110005110598586635278184448"); list.add("002212024013110025210598587142593196032"); list.add("002212024013110075110598588397774528512"); list.add("002212024013110141610598590013434626048"); list.add("002212024013110204910598591660658892800"); list.add("002212024013110261810598593041914503168"); list.add("002212024013110274610598593409890004992"); list.add("002212024013110283210598593605119373312"); list.add("002212024013110385510598596218304319488"); list.add("002212024013110491610598598819983396864"); list.add("002212024013111024410598602210910408704"); list.add("002212024013111031410598602336937312256"); list.add("002212024013111140410598605064318611456"); list.add("002212024013111185310598606273693618176"); list.add("002212024013111190010598606303692206080"); list.add("002212024013111215310598607027976929280"); list.add("002212024013111222910598607179521327104"); list.add("002212024013111223210598607194658123776"); list.add("002212024013111345110598610295031947264"); list.add("002212024013111494610598614048358887424"); list.add("002212024013111542010598615194981986304"); list.add("002212024013112031610598617442953854976"); list.add("002212024013112042010598617712371052544"); list.add("002212024013112121210598619693931507712"); list.add("002212024013112250110598622918139576320"); list.add("002212024013112293410598624061883072512"); list.add("002212024013112294510598624108703232000"); list.add("002212024013112303410598624316607959040"); list.add("002212024013112341110598625223919800320"); list.add("002212024013112482510598628806468435968"); list.add("002212024013112512210598629548381442048"); list.add("002212024013112564710598630910337576960"); list.add("002212024013112584510598631408152178688"); list.add("002212024013113032610598632585006596096"); list.add("002212024013113111910598634569588281344"); list.add("002212024013113112410598634589048889344"); list.add("002212024013113112610598634598641262592"); list.add("002212024013113174010598636166372601856"); list.add("002212024013113205910598637002392854528"); list.add("002212024013113333410598640169342857216"); list.add("002212024013113424710598642490518192128"); list.add("002212024013113450410598643063405404160"); list.add("002212024013113464510598643485147054080"); list.add("002212024013113491910598644131129303040"); list.add("002212024013113521110598644854076420096"); list.add("002212024013113534510598645246883393536"); list.add("002212024013113544510598645500631760896"); list.add("002212024013113573610598646217339817984"); list.add("002212024013113581310598646371495813120"); list.add("002212024013113593010598646695697833984"); list.add("002212024013113593810598646728363872256"); list.add("002212024013114045510598648059520741376"); list.add("002212024013114075010598648794204958720"); list.add("002212024013114355010598655839968608256"); list.add("002212024013114385810598656627563966464"); list.add("002212024013114404910598657091792191488"); list.add("002212024013114450610598658172856397824"); list.add("002212024013114451010598658188364873728"); list.add("002212024013114454610598658337988554752"); list.add("002212024013114464110598658568288575488"); list.add("002212024013114515310598659876730167296"); list.add("002212024013114545610598660647660019712"); list.add("002212024013114571410598661223282294784"); list.add("002212024013114582510598661520763305984"); list.add("002212024013114594410598661851552100352"); list.add("002212024013115062510598663537531469824"); list.add("002212024013115084610598664126826799104"); list.add("002212024013115111810598664764303187968"); list.add("002212024013115144310598665622812717056"); list.add("002212024013115172310598666296180346880"); list.add("002212024013115182710598666563201888256"); list.add("002212024013115191910598666780773658624"); list.add("002212024013115200710598666983198154752"); list.add("002212024013115403710598672143753805824"); list.add("002212024013115491510598674314564038656"); list.add("002212024013115550310598675775786188800"); list.add("002212024013115555610598675995566456832"); list.add("002212024013115561410598676070878523392"); list.add("002212024013116001110598677068397764608"); list.add("002212024013116154510598680984393080832"); list.add("002212024013116262410598683663330955264"); list.add("002212024013116272210598683909220470784"); list.add("002212024013116412510598687444137504768"); list.add("002212024013116471510598688909602693120"); list.add("002212024013117085010598694342223032320"); list.add("002212024013117164710598696342203805696"); list.add("002212024013117221910598697737317122048"); list.add("002212024013117222210598697747569569792"); list.add("002212024013117561210598706262811332608"); list.add("002212024013117562310598706306950631424"); list.add("002212024013117563410598706354213605376"); list.add("002212024013117583310598706855355981824"); list.add("002212024013118032310598708071059673088"); list.add("002212024013118130010598710491574177792"); list.add("002212024013118145010598710952954523648"); list.add("002212024013118163510598711391924400128"); list.add("002212024013118232210598713101606322176"); list.add("002212024013118352510598716131940630528"); list.add("002212024013118454510598718731290136576"); list.add("002212024013118530310598720570209431552"); list.add("002212024013119013910598722735224741888"); list.add("002212024013119035210598723291900145664"); list.add("002212024013119083610598724484053991424"); list.add("002212024013119175210598726816303669248"); list.add("002212024013119295510598729847608586240"); list.add("002212024013119313810598730281546260480"); list.add("002212024013119435010598733350530977792"); list.add("002212024013119441810598733468773527552"); list.add("002212024013119502610598735010925109248"); list.add("002212024013119544810598736107911954432"); list.add("002212024013119591710598737238176931840"); list.add("002212024013120010810598737704741351424"); list.add("002212024013120054910598738882308468736"); list.add("002212024013120084010598739598076911616"); list.add("002212024013120191310598742255616573440"); list.add("002212024013120261010598744003063427072"); list.add("002212024013120274910598744417540857856"); list.add("002212024013120333810598745881321918464"); list.add("002212024013120381010598747021764304896"); list.add("002212024013120390510598747253155131392"); list.add("002212024013120480210598749506802798592"); list.add("002212024013120502910598750121071202304"); list.add("002212024013120545910598751254040162304"); list.add("002212024013121001410598752575290171392"); list.add("002212024013121042310598753620003745792"); list.add("002212024013121051110598753821691686912"); list.add("002212024013121075710598754518889766912"); list.add("002212024013121183310598757185452912640"); list.add("002212024013121190910598757334874271744"); list.add("002212024013121225910598758301375492096"); list.add("002212024013121234510598758493488558080"); list.add("002212024013121261610598759126676643840"); list.add("002212024013121271610598759381412438016"); list.add("002212024013121274210598759490160046080"); list.add("002212024013121320410598760588566683648"); list.add("002212024013121353310598761465037971456"); list.add("002212024013121373510598761976277680128"); list.add("002212024013121470910598764381803474944"); list.add("002212024013121485410598764824467484672"); list.add("002212024013121491310598764901821308928"); list.add("002212024013121591510598767427270303744"); list.add("002212024013121595110598767581210611712"); list.add("002212024013122001610598767683379765248"); list.add("002212024013122060010598769126895624192"); list.add("002212024013122061410598769186009608192"); list.add("002212024013122061810598769203638267904"); list.add("002212024013122084710598769827351195648"); list.add("002212024013122120110598770639375052800"); list.add("002212024013122124510598770825402626048"); list.add("002212024013122125810598770878310080512"); list.add("002212024013122133010598771016380698624"); list.add("002212024013122150510598771411120906240"); list.add("002212024013122202510598772753389940736"); list.add("002212024013122310710598775446892797952"); list.add("002212024013122382610598777289795645440"); list.add("002212024013122492810598780064832409600"); list.add("002212024013122502410598780298737315840"); list.add("002212024013122530810598780990662103040"); list.add("002212024013122565510598781939748581376"); list.add("002212024013122584110598782384836833280"); list.add("002212024013123095910598785227203899392"); list.add("002212024013123170810598787026894704640"); list.add("002212024013123195710598787737314488320"); return list; } public List getPaymentIdList() { List paymentIdList1 = getPaymentIdList1(); List paymentIdList2 = getPaymentIdList2(); List resultList = Lists.newArrayList(); resultList.addAll(paymentIdList1); resultList.addAll(paymentIdList2); return resultList; } @Test public void testClearingWithdraw() { // 保存提现记录 ClearingWithdrawInfo record = new ClearingWithdrawInfo(); record.setWithdrawCode("132321354"); record.setWithdrawStatus(Constants.ZERO); Date now = new Date(); record.setApplicationTime(now); record.setCreateTime(now); record.setDelFlag(DelFlagEnum.NORMAL.getValue()); clearingWithdrawInfoService.insertOrUpdate(record); } @Test public void testGetPileTypeNum() { Long stationId = 1L; pileConnectorInfoService.getPileTypeNum(stationId); } @Test public void testUpdateStatus() { String pileConnectorCode = "8800000000012601"; String status = "0"; pileConnectorInfoService.updateConnectorStatus(pileConnectorCode, status); } @Test public void testRedisSet() { String redisKey = "push_station_connector"; redisCache.setCacheSet(redisKey, Sets.newHashSet("1")); redisCache.setCacheSet(redisKey, Sets.newHashSet("3")); redisCache.setCacheSet(redisKey, Sets.newHashSet("5")); redisCache.setCacheSet(redisKey, Sets.newHashSet("1")); redisCache.setCacheSet(redisKey, Sets.newHashSet("1")); redisCache.setCacheSet(redisKey, Sets.newHashSet("7")); redisCache.setCacheSet(redisKey, Sets.newHashSet("3")); Set cacheSet = redisCache.getCacheSet(redisKey); System.out.println(cacheSet); } @Test public void testSettleOrder() { Map returnAmountMap = Maps.newHashMap(); returnAmountMap.put("returnPrincipal", new BigDecimal("16.8700")); // 更新会员钱包 BigDecimal returnPrincipal = returnAmountMap.get("returnPrincipal"); // if (returnPrincipal != null && principalPayRecord != null) { // principalPayRecord.setRefundAmount(returnPrincipal); // updatePayRecordList.add(principalPayRecord); // } BigDecimal returnGift = returnAmountMap.get("returnGift"); System.out.println(returnPrincipal); // if (returnGift != null && giftPayRecord != null) { // giftPayRecord.setRefundAmount(returnGift); // updatePayRecordList.add(giftPayRecord); // // 支付的赠送金额-退回的赠送金额 = 实际使用赠送金额消费的部分 // virtualAmount = giftPay.subtract(returnGift); // } // UpdateMemberBalanceDTO updateMemberBalanceDTO = UpdateMemberBalanceDTO.builder() // .memberId(orderBasicInfo.getMemberId()) // .type(MemberWalletEnum.TYPE_IN.getValue()) // 进账 // .subType(MemberWalletEnum.SUBTYPE_ORDER_SETTLEMENT_REFUND.getValue()) // 订单结算退款 // .updatePrincipalBalance(returnPrincipal) // .updateGiftBalance(returnGift) // .relatedOrderCode(orderBasicInfo.getOrderCode()) // .build(); // memberBasicInfoService.updateMemberBalance(updateMemberBalanceDTO); } @Test public void testVin() { String vinCode = "tango"; MemberPlateNumberRelation memberPlateInfoByVinCode = memberPlateNumberRelationService.getMemberPlateInfoByVinCode(vinCode); System.out.println(memberPlateInfoByVinCode); } @Test public void testParking() throws UnsupportedEncodingException { // GetTokenDTO dto = new GetTokenDTO(); // dto.setAppId("I2qa3hdr116100dc"); // dto.setSecretKey("2qa3hdr13754a8e"); // String token = ltytService.getToken(dto); // System.out.println(token); BindCouponDTO dto = new BindCouponDTO(); dto.setAppId("I2qa3hdr116100dc"); dto.setSecretKey("2qa3hdr13754a8e"); dto.setMerchantId("3prv98bm8db70a9"); dto.setCouponId("3prvd0q7a4817bf"); dto.setPlateNumber("贵A12345"); dto.setPlateColor(1); String s = ltytService.bindCoupon(dto); System.out.println(s); } @Test public void testUpdateConnectorStatus() { String pileConnectorCode = "8800000000000101"; String status = PileConnectorStatusEnum.FREE.getValue(); pileConnectorInfoService.updateConnectorStatus(pileConnectorCode, status); } @Test public void testOrder() throws Exception { // 通过vin码查询数据库绑定用户信息 MemberPlateNumberRelation plateInfo = memberPlateNumberRelationService.getMemberPlateInfoByVinCode("LNBSCC4H1LT107646"); GenerateOrderDTO dto = new GenerateOrderDTO(); dto.setMemberPlateNumberRelation(plateInfo); dto.setPileSn("88000000000126"); dto.setConnectorCode("01"); dto.setStartMode(StartModeEnum.VIN_CODE.getValue()); dto.setMemberId(plateInfo.getMemberId()); // 通过memberId获取账户余额 MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId()); if (memberVO == null) { throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR); } BigDecimal totalAccountAmount = memberVO.getTotalAccountAmount(); if (totalAccountAmount.compareTo(BigDecimal.ZERO) <= 0) { throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT); } dto.setChargeAmount(totalAccountAmount); // 充电金额 dto.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue()); // 1-余额支付 OrderBasicInfo basicInfo = orderBasicInfoService.generateOrder(dto); // 支付订单 PayOrderDTO payOrderDTO = new PayOrderDTO(); payOrderDTO.setOrderCode(basicInfo.getOrderCode()); payOrderDTO.setPayAmount(totalAccountAmount); payOrderDTO.setPayMode(dto.getPayMode()); payOrderDTO.setMemberId(dto.getMemberId()); // payOrderDTO.setCode(); // payOrderDTO.setLockValue(); // payOrderDTO.setOrderBasicInfo(basicInfo); // Map map = orderBasicInfoService.payOrder(payOrderDTO); // System.out.println(map); } @Test public void testTransactionRecord() { // 获取消息体 String msg = "8823000000123302230707215317078588230000001233020000341507071763023615070717b02a0200a00f0000000000003016000090dc010000000000000000000000000020c50100000000000000000000000000888a0100000000000000000000000000b0220749005032074900a00f000000000000e01500004c4e425343433448314c543130373634360563023615070717450000000000000000"; byte[] msgBody = BytesUtil.str2Bcd(msg); int startIndex = 0; int length = 16; // 交易流水号 byte[] orderCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String transactionCode = BytesUtil.bcd2Str(orderCodeByteArr); // 桩编码 startIndex += length; length = 7; byte[] pileSnByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String pileSn = BytesUtil.bcd2Str(pileSnByteArr); // 枪号 startIndex += length; length = 1; byte[] connectorCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String connectorCode = BytesUtil.bcd2Str(connectorCodeByteArr); // 开始时间 CP56Time2a 格式 startIndex += length; length = 7; byte[] startTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); // String binary = BytesUtil.binary(startTimeByteArr, 16); Date startDate = Cp56Time2aUtil.byte2Hdate(startTimeByteArr); String startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate); // 结束时间 CP56Time2a 格式 startIndex += length; byte[] endTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); Date endDate = Cp56Time2aUtil.byte2Hdate(endTimeByteArr); String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate); // 尖单价 精确到小数点后五位(尖电费+尖服务费,见费率帧) startIndex += length; length = 4; byte[] sharpPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String sharpPrice = YKCUtils.convertDecimalPoint(sharpPriceByteArr, 5); // 尖电量 精确到小数点后四位 startIndex += length; length = 4; byte[] sharpUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String sharpUsedElectricity = YKCUtils.convertDecimalPoint(sharpUsedElectricityByteArr, 4); // 计损尖电量 startIndex += length; byte[] sharpPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String sharpPlanLossElectricity = YKCUtils.convertDecimalPoint(sharpPlanLossElectricityByteArr, 4); // 尖金额 startIndex += length; byte[] sharpAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String sharpAmount = YKCUtils.convertDecimalPoint(sharpAmountByteArr, 4); // 峰单价 精确到小数点后五位(峰电费+峰服务费) startIndex += length; byte[] peakPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String peakPrice = YKCUtils.convertDecimalPoint(peakPriceByteArr, 5); // 峰电量 startIndex += length; byte[] peakUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String peakUsedElectricity = YKCUtils.convertDecimalPoint(peakUsedElectricityByteArr, 4); // 计损峰电量 startIndex += length; byte[] peakPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String peakPlanLossElectricity = YKCUtils.convertDecimalPoint(peakPlanLossElectricityByteArr, 4); // 峰金额 startIndex += length; byte[] peakAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String peakAmount = YKCUtils.convertDecimalPoint(peakAmountByteArr, 4); // 平单价 精确到小数点后五位(平电费+平服务费) startIndex += length; byte[] flatPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String flatPrice = YKCUtils.convertDecimalPoint(flatPriceByteArr, 5); // 平电量 startIndex += length; byte[] flatUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String flatUsedElectricity = YKCUtils.convertDecimalPoint(flatUsedElectricityByteArr, 4); // 计损平电量 startIndex += length; byte[] flatPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String flatPlanLossElectricity = YKCUtils.convertDecimalPoint(flatPlanLossElectricityByteArr, 4); // 平金额 startIndex += length; byte[] flatAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String flatAmount = YKCUtils.convertDecimalPoint(flatAmountByteArr, 4); // 谷单价 精确到小数点后五位(谷电费+谷 服务费) startIndex += length; byte[] valleyPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String valleyPrice = YKCUtils.convertDecimalPoint(valleyPriceByteArr, 5); // 谷电量 startIndex += length; byte[] valleyUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String valleyUsedElectricity = YKCUtils.convertDecimalPoint(valleyUsedElectricityByteArr, 4); // 计损谷电量 startIndex += length; byte[] valleyPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String valleyPlanLossElectricity = YKCUtils.convertDecimalPoint(valleyPlanLossElectricityByteArr, 4); // 谷金额 startIndex += length; byte[] valleyAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String valleyAmount = YKCUtils.convertDecimalPoint(valleyAmountByteArr, 4); // 电表总起值 startIndex += length; length = 5; byte[] ammeterTotalStartByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String ammeterTotalStart = YKCUtils.convertDecimalPoint(ammeterTotalStartByteArr, 4); // 电表总止值 startIndex += length; byte[] ammeterTotalEndByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String ammeterTotalEnd = YKCUtils.convertDecimalPoint(ammeterTotalEndByteArr, 4); // 总电量 startIndex += length; length = 4; byte[] totalElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String totalElectricity = YKCUtils.convertDecimalPoint(totalElectricityByteArr, 4); // 计损总电量 startIndex += length; byte[] planLossTotalElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String planLossTotalElectricity = YKCUtils.convertDecimalPoint(planLossTotalElectricityByteArr, 4); // 消费金额 精确到小数点后四位,包含电费、 服务费 startIndex += length; byte[] consumptionAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String consumptionAmount = YKCUtils.convertDecimalPoint(consumptionAmountByteArr, 4); // VIN 码 VIN 码,此处 VIN 码和充电时 VIN 码不同, 正序直接上传, 无需补 0 和反序 startIndex += length; length = 17; byte[] vinCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String vinCode = BytesUtil.ascii2Str(vinCodeByteArr); /** * 交易标识 * 0x01: app 启动 * 0x02:卡启动 * 0x04:离线卡启动 * 0x05: vin 码启动充电 */ startIndex += length; length = 1; byte[] transactionIdentifierByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String transactionIdentifier = BytesUtil.bcd2Str(transactionIdentifierByteArr); // 交易时间 CP56Time2a 格式 startIndex += length; length = 7; byte[] transactionTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); Date transactionDate = Cp56Time2aUtil.byte2Hdate(transactionTimeByteArr); String transactionTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, transactionDate); // 停止原因 startIndex += length; length = 1; byte[] stopReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String stopReason = BytesUtil.bin2HexStr(stopReasonByteArr); String stopReasonMsg = YKCChargingStopReasonEnum.getMsgByCode(Integer.parseInt(stopReason, 16)); // 物理卡号 不足 8 位补 0 startIndex += length; length = 8; byte[] cardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); // byte[] logicCardNum = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16); String logicCard = BytesUtil.binary(cardNumByteArr, 16); // log.info("桩号:{}发送交易记录物理卡号:{}", pileSn, logicCard); // // log.info("[===交易记录===]交易流水号:{}, 桩编号:{}, 枪号:{}, 开始时间:{}, 结束时间:{}, 尖单价:{}, 尖电量:{}, 计损尖电量:{}, 尖金额:{}, " + // "峰单价:{}, 峰电量:{}, 计损峰电量:{}, 峰金额:{}, 平单价:{}, 平电量:{}, 计损平电量:{}, 平金额:{}, " + // "谷单价:{}, 谷电量:{}, 计损谷电量:{}, 谷金额:{}, 电表总起值:{}, 电表总止值:{}, 总电量:{}, 计损总电量:{}, 消费金额:{}, " + // "电动汽车唯一标识:{}, 交易标识:{}, 交易日期、时间:{}, 停止原因码:{}, 停止原因描述:{}, 物理卡号:{}", // transactionCode, pileSn, connectorCode, startTime, endTime, sharpPrice, sharpUsedElectricity, sharpPlanLossElectricity, sharpAmount, // peakPrice, peakUsedElectricity, peakPlanLossElectricity, peakAmount, flatPrice, flatUsedElectricity, flatPlanLossElectricity, flatAmount, // valleyPrice, valleyUsedElectricity, valleyPlanLossElectricity, valleyAmount, ammeterTotalStart, ammeterTotalEnd, totalElectricity, planLossTotalElectricity, // consumptionAmount, vinCode, transactionIdentifier, transactionTime, stopReason, stopReasonMsg, logicCard); // 交易记录封装到对象里 TransactionRecordsData data = TransactionRecordsData.builder() // .orderCode(transactionCode) .transactionCode(transactionCode) .pileSn(pileSn) .connectorCode(connectorCode) .startTime(startTime) .endTime(endTime) .sharpPrice(sharpPrice) .sharpUsedElectricity(sharpUsedElectricity) .sharpPlanLossElectricity(sharpPlanLossElectricity) .sharpAmount(sharpAmount) .peakPrice(peakPrice) .peakUsedElectricity(peakUsedElectricity) .peakPlanLossElectricity(peakPlanLossElectricity) .peakAmount(peakAmount) .flatPrice(flatPrice) .flatUsedElectricity(flatUsedElectricity) .flatPlanLossElectricity(flatPlanLossElectricity) .flatAmount(flatAmount) .valleyPrice(valleyPrice) .valleyUsedElectricity(valleyUsedElectricity) .valleyPlanLossElectricity(valleyPlanLossElectricity) .valleyAmount(valleyAmount) .ammeterTotalStart(ammeterTotalStart) .ammeterTotalEnd(ammeterTotalEnd) .totalElectricity(totalElectricity) .planLossTotalElectricity(planLossTotalElectricity) .consumptionAmount(consumptionAmount) .vinCode(vinCode) .transactionIdentifier(transactionIdentifier) .transactionTime(transactionTime) .stopReasonMsg(stopReasonMsg) .logicCard(logicCard) .build(); // boolean flag = !StringUtils.equals("0000000000000000", "a511101970000000"); // System.out.println(flag); // 处理订单加锁 String lockKey = "settle_order_" + transactionCode; String uuid = IdUtils.fastUUID(); try { // redis锁 Boolean isLock = redisCache.lock(lockKey, uuid, 1500); if (isLock) { // transactionRecordsRequestHandler.processOrder(data); } } catch (Exception e) { System.out.println("处理订单发生异常: " + e); } finally { if (uuid.equals(redisCache.getCacheObject(lockKey).toString())) { redisCache.unLock(lockKey); } } } @Test public void testFault() { StringBuffer sb = new StringBuffer("0100"); String lowOrder = sb.substring(0, 2); String highOrder = sb.substring(2, 4); // String hardwareFault = highOrder + lowOrder; byte[] hardwareFaultByteArr = BytesUtil.str2Bcd(highOrder + lowOrder); String binStr = BytesUtil.bytes2BinStr(hardwareFaultByteArr); // log.info("binStr:{}", binStr); // 0000 0000 0000 0001 int faultCode = 0; for (int i = 0; i < binStr.length(); i++) { if (binStr.charAt(i) == '1') { faultCode = 15 - i; break; } } String faultReason = YKCPileFaultReasonEnum.getValueByCode(faultCode); System.out.println(faultReason); } @Test public void testQueryCorpMember() { List accountList = adapayMemberAccountService.selectAdapayMemberAccountList(new AdapayMemberAccount()); if (CollectionUtils.isNotEmpty(accountList)) { List ids = accountList.stream().map(x -> x.getId() + "").collect(Collectors.toList()); adapayMemberAccountService.deleteAdapayMemberAccountByIds(ids); } // try { // Map map = adapayMemberService.selectAdapayMember("5"); // // String adapayMemberId = "ACM29562569"; // AdapayCorpMemberVO adapayCorpMemberVO = adapayMemberService.queryCorpAdapayMemberInfo(adapayMemberId); // System.out.println(adapayCorpMemberVO); // // // } catch (BaseAdaPayException e) { // throw new RuntimeException(e); // } } @Test public void testGetPileListByStationIdList() { // List stationIdList = Lists.newArrayList("2"); // Map> pileListByStationIdList = aMapService.getPileListByStationIdList(stationIdList); // System.out.println(pileListByStationIdList); GetStationInfoDTO dto = new GetStationInfoDTO(); dto.setType("page"); aMapService.getStationInfosV2(dto); } @Test public void testMultiSave() { String prefix = "test_multi_save:"; Map redisMap = Maps.newHashMap(); for (int i = 0; i < 1000; i++) { redisMap.put(prefix + i, PileInfoVO.builder().pileSn(i + "").build()); } redisCache.multiSave(redisMap, 60); } @Test public void testBillingTemplate() { pileBillingTemplateService.queryStationBillingTemplateListForUniApp("2"); } /** * 查询汇付会员信息 */ @Test public void testQueryAdapayMemberInfo() { String adapayMemberId = "ACM82792551"; String settleAccountId = null; try { AdapayCorpMemberVO adapayCorpMemberVO = adapayService.queryCorpAdapayMemberInfo(adapayMemberId, wechatAppId1); // AdapaySettleAccountVO vo = adapayService.queryAdapaySettleAccount(adapayMemberId, settleAccountId, wechatAppId1); System.out.println(JSON.toJSONString(adapayCorpMemberVO)); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } @Test public void testSaveAdapayCallbackRecord() throws JsonProcessingException { String data = "{\n" + " \"object\": \"refund\",\n" + " \"status\": \"succeeded\",\n" + " \"prod_mode\": \"true\",\n" + " \"id\": \"0022120230531111946980509821471137853440\",\n" + " \"refund_order_no\": \"823725974557265920\",\n" + " \"payment_id\": \"002212023053110524210509814658135928832\",\n" + " \"payment_order_no\": \"C27262970851\",\n" + " \"refund_amt\": \"7.82\",\n" + " \"fee_amt\": \"0.04\",\n" + " \"channel_no\": \"2023053121R064uj\",\n" + " \"created_time\": \"1685503187000\",\n" + " \"succeed_time\": \"1685503199000\",\n" + " \"app_id\": \"app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa\",\n" + " \"reason\": \"\",\n" + " \"notify_url\": \"https://api.jsowellcloud.com/uniapp/pay/adapayRefundCallback\"\n" + "}"; JSONObject jsonObject = JSON.parseObject(data); ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); AdapayRefundRecord adapayRefundRecord = mapper.readValue(jsonObject.toJSONString(), AdapayRefundRecord.class); adapayRefundRecord.setRefundId(jsonObject.getString("id")); // 保存到数据库 adapayRefundRecordService.insertAdapayRefundRecord(adapayRefundRecord); } @Test public void testQueryCallback() { AdapayCallbackRecord aaaa = adapayCallbackRecordService.selectByOrderCode("aaaa"); System.out.println(aaaa); } @Test public void testAdapayRefund() { // 创建汇付退款对象 在完成初始化设置情况下,调用方法,获取 Refund对象 try { String id = "002212023052710075810508353847861903360"; String refundAmount = "0.01"; Map refundParams = Maps.newHashMap(); refundParams.put("refund_amt", AdapayUtil.formatAmount(refundAmount)); refundParams.put("refund_order_no", SnowflakeIdWorker.getSnowflakeId()); refundParams.put("notify_url", "https://api.jsowellcloud.com/uniapp/pay/adapayRefundCallback"); Map response = Refund.create(id, refundParams); System.out.println(JSON.toJSONString(response)); // if (response != null && !response.isEmpty()) { // JSONObject jsonObject = JSONObject.parseObject(response.get("expend").toString()); // JSONObject pay_info = jsonObject.getJSONObject("pay_info"); // Map resultMap = JSONObject.parseObject(pay_info.toJSONString(), new TypeReference>() {}); // } } catch (Exception e) { System.out.println(e); } } @Test public void testSaveCallback() throws JsonProcessingException { String data = "{\"app_id2\":\"app_d0c80cb1-ffc8-48cb-a030-fe9bec823aaa\",\"created_time\":\"20230530132956\",\"description\":\"{\\\"orderCode\\\":\\\"C29505932783\\\",\\\"type\\\":\\\"order\\\"}\",\"end_time\":\"20230530133027\",\"expend\":{\"bank_type\":\"OTHERS\",\"open_id\":\"o8jhot6PJF93EPhNISsXi28dKdS8\",\"sub_open_id\":\"o4REX5MprZfTaLnVNxfdOY-wnwGI\"},\"fee_amt\":\"0.11\",\"id\":\"002212023053013295610509491838664794112\",\"order_no\":\"C29505932783\",\"out_trans_id\":\"4200001855202305308670391485\",\"party_order_id\":\"02212305304859640306711\",\"pay_amt\":\"20.00\",\"pay_channel\":\"wx_lite\",\"real_amt\":\"20.00\",\"share_eq\":\"Y\",\"status\":\"succeeded\",\"wx_user_id\":\"\"}"; JSONObject jsonObject = JSON.parseObject(data); ObjectMapper mapper = new ObjectMapper(); mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); AdapayCallbackRecord adapayCallbackRecord = mapper.readValue(jsonObject.toJSONString(), AdapayCallbackRecord.class); adapayCallbackRecord.setExpend(jsonObject.getString("expend")); adapayCallbackRecord.setPaymentId(jsonObject.getString("id")); // adapayCallbackRecordService.saveAdapayCallbackRecord(adapayCallbackRecord); } @Test public void testAMap() throws Exception { String pileConnectorCode = "8800000000012601"; // String s = aMapService.pushChargingDeviceDynamics(pileConnectorCode); GetStationInfoDTO dto = new GetStationInfoDTO(); dto.setType("page"); aMapService.getStationInfos(dto); } @Test public void testVinCode() { String msg = "880000000000210203000000000000000000000000000000000000000000000000004C5257594743454B584D43303437313434"; // 获取消息体 byte[] msgBody = BytesUtil.str2Bcd(msg); int startIndex = 0; int length = 7; // 桩编码 byte[] pileSnByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String pileSn = BytesUtil.binary(pileSnByteArr, 16); // 保存时间 // saveLastTime(pileSn, channel); // 枪号 startIndex += length; length = 1; byte[] connectorNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String connectorCode = BytesUtil.bcd2Str(connectorNumByteArr); // 启动方式 // 0x01 表示通过刷卡启动充电 // 0x02 表求通过帐号启动充电 (暂不支持) // 0x03 表示vin码启动充电 startIndex += length; byte[] startModeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String startMode = BytesUtil.bcd2Str(startModeByteArr); // 是否需要密码 0x00 不需要 0x01 需要 startIndex += length; byte[] needPasswordFlagByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String needPasswordFlag = BytesUtil.bcd2Str(needPasswordFlagByteArr); // 物理卡号 不足 8 位补 0 startIndex += length; length = 8; byte[] cardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String physicsCard = BytesUtil.binary(cardNumByteArr, 16); // 输入密码 对用户输入的密码进行16 位MD5 加密,采用小写上传 startIndex += length; length = 16; byte[] inputPasswordByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); // VIN码 startIndex += length; length = 17; byte[] vinCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String vinCode = BytesUtil.ascii2Str(vinCodeByteArr); System.out.println("桩号:" + pileSn + "申请充电VIN码:" + vinCode); /** * 刷卡启动充电 */ String logicCard = ""; byte[] authenticationFlagByteArr = Constants.zeroByteArray; // 鉴权成功标识 byte[] accountBalanceByteArr = Constants.zeroByteArray; // 账户余额 String transactionCode = ""; try { /** * VIN码启动充电 */ if (StringUtils.equals("03", startMode)) { // 通过vin码查询数据库绑定用户信息 MemberPlateNumberRelation plateInfo = memberPlateNumberRelationService.getMemberPlateInfoByVinCode(vinCode); if (plateInfo == null) { throw new BusinessException("", "未查到绑定用户信息"); } if (!StringUtils.equals("1", plateInfo.getVinStatus())) { // 1- 正常使用 throw new BusinessException("", "vin状态不正确"); } // vin码生成订单 vin启动充电 GenerateOrderDTO dto = new GenerateOrderDTO(); dto.setMemberPlateNumberRelation(plateInfo); dto.setPileSn(pileSn); dto.setConnectorCode(connectorCode); dto.setStartMode(StartModeEnum.VIN_CODE.getValue()); Map map = orderBasicInfoService.generateOrderByCard(dto); if (map != null) { transactionCode = (String) map.get("transactionCode"); accountBalanceByteArr = YKCUtils.getPriceByte(String.valueOf(map.get("accountBalance")), 2); // 鉴权成功标识 0x00 失败 0x01 成功 authenticationFlagByteArr = Constants.oneByteArray; } else { throw new BusinessException("", "生成vin订单失败"); } } } catch (BusinessException e) { e.printStackTrace(); System.out.println("1"); // log.error("VIN码启动充电鉴权 error:{}, {}", e.getCode(), e.getMessage()); } catch (Exception e) { e.printStackTrace(); System.out.println("2"); transactionCode = "00000000000000000000000000000000"; accountBalanceByteArr = BytesUtil.checkLengthAndBehindAppendZero(accountBalanceByteArr, 8); authenticationFlagByteArr = Constants.zeroByteArray; // log.error("VIN码启动充电鉴权 error", e); } byte[] serialNumByteArr = BytesUtil.str2Bcd(transactionCode); byte[] defeatReasonByteArr = Constants.zeroByteArray; // 不足位数的值补零 // cardNumByteArr = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16); // serialNumByteArr = BytesUtil.checkLengthAndBehindAppendZero(serialNumByteArr, 32); // pileSnByteArr = BytesUtil.checkLengthAndBehindAppendZero(pileSnByteArr, 14); // accountBalanceByteArr = BytesUtil.checkLengthAndBehindAppendZero(accountBalanceByteArr, 8); // 拼装消息体 byte[] msgBodyByteArr = Bytes.concat(serialNumByteArr, pileSnByteArr, connectorNumByteArr, cardNumByteArr, accountBalanceByteArr, authenticationFlagByteArr, defeatReasonByteArr); String s = BytesUtil.bin2HexStr(msgBodyByteArr); System.out.println(s); } @Test public void testGenerateLianlianToken() throws UnsupportedEncodingException { String OperatorID = "425010765"; String OperatorSecret = "123123123123aaaa"; // 1234567890abcdef //请求dataX Map data = new HashMap<>(); data.put("OperatorID", OperatorID); data.put("OperatorSecret", OperatorSecret); String dataJson = JSONUtil.toJsonStr(data); //加密 byte[] encryptText = Cryptos.aesEncrypt(dataJson.getBytes(StandardCharsets.UTF_8), OperatorSecret.getBytes(), OperatorSecret.getBytes()); String strData = Encodes.encodeBase64(encryptText); Map request = new LinkedHashMap<>(); request.put("OperatorID", OperatorID); request.put("Data", strData); request.put("TimeStamp", System.currentTimeMillis() + ""); request.put("Seq", "0001"); //生成签名 String sig = GBSignUtils.sign(request, OperatorSecret); request.put("Sig", sig); String tokenRequest = JSONUtil.toJsonStr(request); CommonParamsDTO dto = JSONObject.parseObject(tokenRequest, CommonParamsDTO.class); lianLianService.generateToken(dto); } @Test public void testupdateElecAmount() { // orderBasicInfoService.updateElecAmount(); } @Test public void testSelectSomeStatusCardInfo() { PileAuthCard pileAuthCard = pileAuthCardService.selectCardInfoByLogicCard("1111111111111111"); System.out.println(pileAuthCard); } @Test public void testLianLian() throws UnsupportedEncodingException { // 获取令牌 // LianLianGetTokenDTO dto = new LianLianGetTokenDTO(); // dto.setOperatorId("MA1JLFUU8"); // dto.setOperatorSecret("Nh62XxlIR5OjAzFj"); // String token = lianLianService.getToken("", "MA1JLFUU8", "fGwLsxW1HdzLw7jp"); // System.out.println("token:" + token); String operatorId = "425010765"; String operatorSecret = "3DSBTWHVIC6KVCKI"; // 请求data // Map data = new HashMap<>(); // data.put("OperatorID", operatorId); // data.put("OperatorSecret", operatorSecret); // String dataJson = JSONUtil.toJsonStr(data); JSONObject json = new JSONObject(); // json.put("StationIDs", com.google.common.collect.Lists.newArrayList("1", "2")); json.put("LastQueryTime", "2023-05-29 10:00:00"); json.put("PageNo", 1); json.put("PageSize", 10); String dataJson = JSON.toJSONString(json); // 加密 byte[] encryptText = Cryptos.aesEncrypt(dataJson.getBytes(StandardCharsets.UTF_8), operatorSecret.getBytes(), operatorSecret.getBytes()); String strData = Encodes.encodeBase64(encryptText); String timeStamp = DateUtils.parseDateToStr(DateUtils.YYYYMMDDHHMMSS, new Date()); Map request = new LinkedHashMap<>(); request.put("OperatorID", operatorId); request.put("Data", strData); request.put("TimeStamp", timeStamp); request.put("Seq", "0001"); // 生成签名 String sig = GBSignUtils.sign(request, operatorSecret); request.put("Sig", sig); JSONObject jsonObject = new JSONObject(request); System.out.println(jsonObject); // CommonParamsDTO dto = new CommonParamsDTO(); // dto.setOperatorID(operatorId); // dto.setData(strData); // dto.setTimeStamp(timeStamp); // dto.setSeq("0001"); // dto.setSig(sig); // Map map = lianLianService.generateToken(dto); QueryStationInfoDTO dto = new QueryStationInfoDTO(); dto.setOperatorId(operatorId); Map map = lianLianService.query_stations_info(dto); // String data1 = map.get("Data"); // 解密data // String data1 = "JudlP17tnYuQc2zwOzmjJAb9hgghIymefG5v3ZzSOlPDh5+bJHIedsYzKMD56tHlmlg6Cb7vG+o6KjMSSpn1fyqBH3UVaEFF7uEc+lOuEc9c1vUzq20vBQ7N3EpDKqVBKjZbOezMsKYaCX7Br8XTsCYT8VCQui/np3cn+phi3VC+0s1coNxBX7xoEDZ7iuPjPoSWL7g3J0uOw2SoGaIdBQG3eTxaZJ5L+vBmuDF0pEXgazTMnuKml1mx1QHkig2F7h/ILT0VEKVXWMmmogYgiBk5ItO0DyzRl+ASb184gOhYGo82GJmWRiXrAXmceCiSNvTGg6aL26imIGKkJNfOx9/9mTqjGvy6kzxvWJ29PBU="; // byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(data1), // operatorSecret.getBytes(), operatorSecret.getBytes()); // String dataStr = new String(plainText, "UTF-8"); // Map resultMap = (Map) JSON.parse(dataStr); // // String token = resultMap.get("AccessToken"); // // System.out.println("解密后token:" + token); // LianLianPushStationInfoDTO dto1 = LianLianPushStationInfoDTO.builder() // .OperatorID("MA1JLFUU8") // .DataSecret("HVicnbRZbhPdIdpF") // .DataSecretIV("JNvcjSOn1vhrE11M") // .SigSecret("53TtFpc4gdVZbF3x") // // .token(token) // .stationId(2L) // // .build(); // lianLianService.pushStationInfo(dto1); // 推送订单状态 // lianLianService.pushConnectorStatus("8800000000000101", "1"); // 推送订单信息 // lianLianService.pushOrderInfo("C27680791529"); // 推送启动充电结果 // lianLianService.pushStartChargeResult("C27680791529"); // 推送充电状态 // lianLianService.pushChargeStatus("C27680791529"); // 推送停止充电结果 // lianLianService.pushStopChargeResult("C27680791529"); // 推送充电订单信息 // lianLianService.pushChargeOrderInfo("C27680791529"); // 推送订单结算信息 // lianLianService.pushOrderSettlementInfo("C27680791529"); // 查询订单结算信息 // lianLianService.queryOrderSettlementInfo("C27680791529"); // 推送订单对账结果信息 // lianLianService.pushOrderReconciliationInfo("C27680791529"); // 测试生成、解密令牌 // long ttlMillis = 60 * 60 * 24 * 1000; // String token = JWTUtils.createToken(operatorId, operatorSecret, ttlMillis); // System.out.println(JWTUtils.checkThirdPartyToken(token)); JSONObject jsonObject1 = new JSONObject(map); jsonObject1.put("OperatorID", "425010765"); jsonObject1.put("Data", "Ntu99RpveEOm2VUNq6RpD7OuOPXRbNxMOPmaBl67nkLk0nD/VmhipdSpq/Qfswhe1o55YMT+3Z7e6xe3fiJA3cZcvetxOEUF6sjvKLRq2rU="); jsonObject1.put("TimeStamp", "20230530090132"); jsonObject1.put("Seq", "0001"); jsonObject1.put("Sig", "1568D2D35B245A0205B33D0EF92E7981"); String jsonString = JSON.toJSONString(jsonObject1); String result = HttpUtils.sendPostContentType("http://localhost:8080/LianLian/v1/query_stations_info", jsonString, "application/json"); JSONObject object = JSONObject.parseObject(result); String data1 = (String) object.get("data"); // 解密data byte[] plainText = Cryptos.aesDecrypt(Encodes.decodeBase64(data1), operatorSecret.getBytes(), operatorSecret.getBytes()); String dataStr = new String(plainText, StandardCharsets.UTF_8); Map resultMap = (Map) JSON.parse(dataStr); } @Test public void testRefundForBalance() { BigDecimal refundAmount = new BigDecimal("2"); // 退款金额 元转分 123 int refundTotalCents = refundAmount.multiply(new BigDecimal(100)).intValue(); // 查询用户充值余额订单 过滤掉已经退款的充值订单 refundableOrder List recordList = Lists.newArrayList(); // recordList.add(RefundableWxPayOrderData.builder().outTradeNo("1").transactionId("1").payerAmount(new BigDecimal("1000")).refundableAmount(new BigDecimal("0")).build()); // recordList.add(RefundableWxPayOrderData.builder().outTradeNo("2").transactionId("2").payerAmount(new BigDecimal("1000")).refundableAmount(new BigDecimal("0")).build()); recordList.add(RefundableWxPayOrderData.builder().outTradeNo("3").transactionId("3").payerAmount(Constants.whitelistDefaultAmount).refundableAmount(new BigDecimal("300")).build()); // 也许需要多笔支付订单才够退款 List requestList = com.google.common.collect.Lists.newArrayList(); WechatPayRefundRequest request; for (RefundableWxPayOrderData record : recordList) { int refundableTotal = record.getRefundableAmount().intValue(); // 该笔支付订单的可退金额,单位分 int payerTotal = record.getPayerAmount().intValue(); // 该笔支付订单的支付金额,单位分 // 用户申请退款金额-可退金额 refundTotalCents = refundTotalCents - refundableTotal; // 123 - 100 request = new WechatPayRefundRequest(); request.setTransaction_id(record.getTransactionId()); // 微信支付单号 request.setOut_trade_no(record.getOutTradeNo()); // 商户订单号 request.setOut_refund_no(SnowflakeIdWorker.getSnowflakeId()); // 商户退款单号 request.setNotify_url(WeChatPayParameter.refundNotifyUrl); // 回调接口 request.setReason("用户余额退款"); request.setFunds_account("AVAILABLE"); if (refundTotalCents > 0) { // 如果大于0说明,这笔单退完也不够 WechatPayRefundRequest.Amount amount = new WechatPayRefundRequest.Amount(); amount.setRefund(refundableTotal); // 退款金额 amount.setTotal(payerTotal); // 原订单金额 request.setAmount(amount); requestList.add(request); } else { // 如果小于0,这笔单退一部分 // 生成退款单号 WechatPayRefundRequest.Amount amount = new WechatPayRefundRequest.Amount(); // 部分退 int i = refundableTotal + refundTotalCents; amount.setRefund(i); // 退款金额 amount.setTotal(payerTotal); // 原订单金额 request.setAmount(amount); requestList.add(request); break; } } System.out.println(requestList); } @Test public void testCloseStartFailedOrder() { String startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.addDays(new Date(), -2)); String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date()); orderBasicInfoService.closeStartFailedOrder(startTime, endTime); } @Test public void testRedisSaveRealTimeData() { String pileSn = "88000000000001"; String connectorCode = "01"; String orderCode = "88000000000001012211161342359448"; String pileConnectorCode = pileSn + connectorCode; String redisKey = CacheConstants.PILE_REAL_TIME_MONITOR_DATA + pileConnectorCode + "_" + orderCode; // for (int i = 0; i < 10; i++) { // try { // Thread.sleep(10000); // } catch (InterruptedException e) { // e.printStackTrace(); // } // Date now = new Date(); // redisCache.hset(redisKey, DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:00", now), i + ":" + DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", now)); // } orderBasicInfoService.getChargingRealTimeData(orderCode); } @Test public void testuniformMessageSend() { AppletTemplateMessageSendDTO appletTemplateMessageSendDTO = new AppletTemplateMessageSendDTO(); // String openId = wxAppletRemoteService.getOpenIdByCode("0537u2100jTXsP1Y0Y300j426t47u210"); // System.out.println("openId:" + openId); appletTemplateMessageSendDTO.setTouser("o4REX5MprZfTaLnVNxfdOY-wnwGI"); // openid String templateId = "UyBPbADlZfsCj89rh_xvfZGlxTW5J5KURpZtt9CNFrY"; appletTemplateMessageSendDTO.setTemplate_id(templateId); // appletTemplateMessageSendDTO.setPage("跳转的页面"); Map map = new HashMap<>(); map.put("amount17", ImmutableMap.of("value", "¥100")); // 结束时间 map.put("time3", ImmutableMap.of("value", "2022-12-30")); // 结束时间 map.put("thing7", ImmutableMap.of("value", "thing7")); // 结束原因 // map.put("thing5", ImmutableMap.of("value", "thing5")); // 结束原因 // map.put("time2", ImmutableMap.of("value", "time2")); // 结束原因 appletTemplateMessageSendDTO.setData(map); wxAppletRemoteService.uniformMessageSend(appletTemplateMessageSendDTO); } @Test public void testWeChatRefund() { ApplyRefundDTO dto = new ApplyRefundDTO(); dto.setRefundType("2"); dto.setMemberId("82100864"); dto.setRefundAmount(new BigDecimal("1.23")); orderBasicInfoService.weChatRefund(dto); } @Test public void testSelectBalanceRechargeRecord() { List list = wxpayCallbackRecordService.queryBalanceRechargeRecordOfTheLatestYear("82100864"); System.out.println(list); } @Test public void testSelectOrderBasicInfoList() { QueryOrderDTO orderBasicInfo = new QueryOrderDTO(); orderBasicInfo.setPileSn("88000000000001"); orderBasicInfo.setOrderStatus(OrderStatusEnum.IN_THE_CHARGING.getValue()); List orderListVOS = orderBasicInfoService.selectOrderBasicInfoList(orderBasicInfo); System.out.println(orderListVOS); for (OrderListVO orderListVO : orderListVOS) { if (StringUtils.equals(orderListVO.getOrderStatus(), OrderStatusEnum.IN_THE_CHARGING.getValue())) { // 修改数据库订单状态 OrderBasicInfo info = OrderBasicInfo.builder() .id(Integer.parseInt(orderListVO.getId())) .orderStatus(OrderStatusEnum.ABNORMAL.getValue()) .build(); orderBasicInfoService.updateOrderBasicInfo(info); } } } @Test public void testWechatRefund() throws JsonProcessingException { WechatPayRefundRequest request = new WechatPayRefundRequest(); request.setTransaction_id("4200001656202212302746036536"); // 微信支付单号 request.setOut_trade_no("768677222373363712"); // 商户订单号 // 生成退款单号 request.setOut_refund_no(SnowflakeIdWorker.getSnowflakeId()); // 商户退款单号 request.setNotify_url(WeChatPayParameter.refundNotifyUrl); // 回调接口 WechatPayRefundRequest.Amount amount = new WechatPayRefundRequest.Amount(); amount.setRefund(10 * 100); // 退款金额 amount.setTotal(10 * 100); // 原订单金额 request.setAmount(amount); request.setReason("结算退款"); request.setFunds_account("AVAILABLE"); wechatPayService.ApplyForWechatPayRefundV3(request); // 退款方法 } @Test public void testUpdatePileSimInfo() { String pileSn = "88000000000001"; String iccid = "89860402102091089943"; pileBasicInfoService.updatePileSimInfo(pileSn, iccid); } @Test public void testPay() { String code = "081zIoGa11GamE0iVVIa1aaJ4G0zIoGE"; String openId = memberService.getOpenIdByCode(code); Map pay = null; try { WeixinPayDTO dto = new WeixinPayDTO(); dto.setOpenId(openId); dto.setAmount("0.01"); pay = orderService.weixinPayV3(dto); } catch (Exception e) { e.printStackTrace(); } System.out.println(JSON.toJSONString(pay)); } @Test public void testMemberRegisterAndLogin() throws BaseAdaPayException { } @Test public void testMemberBasicInfoMapper() { // String memberId = "21772870"; // BigDecimal principalBalance = new BigDecimal("-10"); // BigDecimal giftBalance = new BigDecimal("-110"); // Integer version = 2; // int i = memberBasicInfoMapper.updateMemberBalance(memberId, principalBalance, giftBalance, version); // if (i == 1) { // System.out.println("更新余额成功"); // } else { // System.out.println("更新余额失败"); // } Map refundParams = new HashMap<>(2); refundParams.put("payment_id", "002212023071011321210524320114191904768"); // refundParams.put("refund_id", refund_id); // refundParams.put("refund_order_no", refund_order_no); try { Map refund = Refund.query(refundParams); System.out.println(refund); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } /** * 查询退款信息 */ @Test public void queryRefundTest() { List list = getPaymentIdList(); // 查询退款信息 for (String paymentId : list) { Map refundParams = Maps.newHashMap(); refundParams.put("payment_id", paymentId); try { Map refund = Refund.query(refundParams, wechatAppId2); System.out.println("支付id:" + paymentId + ", 退款信息:" + JSON.toJSONString(refund)); System.out.println(); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } } /** * 查询支付撤销信息 */ @Test public void queryPaymentReverseTest() { List list = getPaymentIdList(); // 查询支付撤销信息 for (String paymentId : list) { try { Map reverse = Maps.newHashMap(); reverse.put("payment_id", paymentId); reverse.put("app_id", wechatAppId2); Map response = PaymentReverse.queryList(reverse, wechatAppId2); System.out.printf("支付id: %s, 支付撤销信息: %s%n", paymentId, JSON.toJSONString(response)); System.out.println(); } catch (BaseAdaPayException e) { throw new RuntimeException(e); } } } @Test public void testGenerateBillingTemplateMsgBody() { String pileSn = "88000000000001"; // 根据桩号查询计费模板 BillingTemplateVO billingTemplateVO = pileBillingTemplateService.selectBillingTemplateDetailByPileSn(pileSn); byte[] messageBody = pileBillingTemplateService.generateBillingTemplateMsgBody(pileSn, billingTemplateVO); System.out.println(BytesUtil.binary(messageBody, 16)); } @Test public void testAnalysisPileParameter() { BasicPileDTO dto = new BasicPileDTO(); // 3个都不传的情况 try { System.out.println("3个都不传的情况"); dto.setPileSn(""); dto.setConnectorCode(""); dto.setPileConnectorCode(""); // orderService.analysisPileParameter(dto); System.out.println("数据正确"); } catch (BusinessException e) { System.out.println(e.getMessage()); } System.out.println(); // 只传sn的情况 try { System.out.println("只传sn的情况"); dto.setConnectorCode(""); dto.setPileConnectorCode(""); dto.setPileSn("88000000000001"); // orderService.analysisPileParameter(dto); System.out.println("数据正确"); } catch (BusinessException e) { System.out.println(e.getMessage()); } System.out.println(); // try { System.out.println("只穿枪口号的情况"); dto.setConnectorCode("01"); dto.setPileConnectorCode(""); dto.setPileSn(""); // orderService.analysisPileParameter(dto); System.out.println("数据正确"); } catch (BusinessException e) { System.out.println(e.getMessage()); } System.out.println(); // 只传充电桩枪口编号的情况 try { System.out.println("只传充电桩枪口编号的情况"); dto.setPileConnectorCode("8800000000000101"); dto.setConnectorCode(""); dto.setPileSn(""); // orderService.analysisPileParameter(dto); System.out.println("数据正确"); } catch (BusinessException e) { System.out.println(e.getMessage()); } try { System.out.println(); System.out.println("传充电桩枪sn+枪口号的情况"); dto.setPileConnectorCode(""); dto.setConnectorCode("01"); dto.setPileSn("88000000000001"); // orderService.analysisPileParameter(dto); System.out.println("数据正确"); } catch (BusinessException e) { System.out.println(e.getMessage()); } } @Test public void testImportBillingTemplate() { ImportBillingTemplateDTO dto = new ImportBillingTemplateDTO(); dto.setBillingTemplateId("1"); // 查询公共计费模板是否存在 PileBillingTemplate pileBillingTemplate = pileBillingTemplateMapper.selectPileBillingTemplateById(Long.valueOf(dto.getBillingTemplateId())); if (pileBillingTemplate == null) { } List billingDetailList = pileBillingTemplate.getPileBillingDetailList(); } @Test public void testProcess() { // 62 68 String msgString = "680da300000388000000000001010020d06840a40000130000000000000000000000000000000088000000000001010202000000000000000000000000000000000000000000000000000000000000000000001516"; byte[] msg = BytesUtil.str2Bcd(msgString); boolean b = YKCUtils.checkMsg(msg); // ykcBusinessService.process(msg, null); } @Test public void testHeartbeat() { // heartbeatRequestHandler.updateStatus("88000000000001", "01", "0"); // heartbeatRequestHandler.updateStatus("88000000000001", "02", "0"); } @Test public void testPush() { byte[] msg = new byte[]{}; String pileSn = "88000000000001"; // ykcPushBusinessService.push(msg, pileSn, YKCFrameTypeCode.READ_REAL_TIME_MONITOR_DATA_CODE); } @Test public void TestMapUtils() { String address = "淀山湖镇黄浦江南路278号"; String areaCode = "320000,320500,320583"; Map longitudeAndLatitude = AddressUtils.getLongitudeAndLatitude(areaCode, address); System.out.println(longitudeAndLatitude); } @Test public void testCreatePile() { BatchCreatePileDTO dto = BatchCreatePileDTO.builder() .merchantId("1") .stationId("1") .softwareProtocol("1") // .connectorNum(1) // .num(10) // .productionDate(new Date()) .build(); pileService.batchCreatePile(dto); } @Test public void testGetIncre() { StopWatch stopWatch = new StopWatch(); // 生成100个 stopWatch.start("生成100个sn号"); List list2 = snUtils.generateSN(1); stopWatch.stop(); System.out.println(list2); System.out.println(stopWatch.getLastTaskTimeMillis()); } @Test public void testDict() { // String dictValue = DictUtils.getDictValue("query_pile_info", "url"); // String station_type = DictUtils.getDictLabel("station_type", "1"); // System.out.println(station_type); // System.out.println("123"); List adapay_station = DictUtils.getDictCache("adapay_station"); List stationIdList = com.google.common.collect.Lists.newArrayList(); if (CollectionUtils.isNotEmpty(adapay_station)) { for (SysDictData sysDictData : adapay_station) { stationIdList.add(sysDictData.getDictValue()); } } System.out.println(stationIdList); } @Test public void testSelectByMerchantId() { List list = pileStationInfoService.selectStationListByMerchantId(Long.valueOf(Constants.ONE)); System.out.println(list); } @Test public void testStr2Bcd() { String logicCardNum = "00000000"; byte[] logicCardNumByteArr = BytesUtil.str2Bcd(logicCardNum); System.out.println(Arrays.toString(logicCardNumByteArr)); } @Test public void testBigDecimalMultiply() { BigDecimal a = new BigDecimal("216.5"); BigDecimal b = new BigDecimal("11.5"); BigDecimal result = a.multiply(b).setScale(2, BigDecimal.ROUND_HALF_UP); System.out.println(result); } @Test public void testRemoteUpdate() { ArrayList list = new ArrayList<>(); list.add("88000000000001"); // pileRemoteService.updateFirmware(list); } @Test public void testGetUserPhoneNum() { String code = "0e5394cfa4eb41c6181ed257f2368a86dfe4ebdac0a4fac85df63657637e6cc3"; wxAppletRemoteService.getMobileNumberByCode(code); } @Test public void testDistance() { QueryStationDTO dto = new QueryStationDTO(); dto.setStationLat("123.2222"); dto.setStationLng("55.6232"); // pileStationInfoService.uniAppQueryStationInfos(dto); } /** * 生成英文字母随机数 RandomStringUtils.randomAlphabetic(10); * 生成数字随机数 RandomStringUtils.randomNumeric(10); * 字母+数字结合 RandomStringUtils.randomAlphanumeric(10); */ @Test public void Test() throws ParseException { /*String s = RandomStringUtils.randomAlphanumeric(32); System.out.println(s); // PuLe4Tyyg1jSFNPhF5d2Ts9ejRn6E8KQ String str = "JS160829"; System.out.println(Md5Utils.hash(str).toUpperCase(Locale.ROOT)); */ String s = RandomStringUtils.randomAlphanumeric(16).toUpperCase(Locale.ROOT); System.out.println(s); Date startTimeDate = sdf.parse("2022-11-26 10:44:11"); Date endTimeDate = sdf.parse("2022-11-27 12:45:11"); System.out.println(DateUtils.getDatePoor(endTimeDate, startTimeDate)); // 1天2小时1分钟 /*String stra = "sp_mchid=1632405339&sub_mchid=1632405339&out_trade_no=1217752501201407033233368318&sp_appid=wxbb3e0d474569481d&sub_appid=wxbb3e0d474569481d" + "bbac689f4654b209de4d6944808ec80b"; System.out.println(Md5Utils.hash(stra).toUpperCase(Locale.ROOT));*/ } @Test public void testSimCard() throws ParseException { ArrayList list = Lists.newArrayList(); Collections.addAll(list, "898607B9102090253556", "898607B9102090253560"); // String s = list.toString().replaceAll("(?:\\[|null|\\]| +)", ""); // System.out.println(s); // List simCardVOList = simCardService.selectSimCardInfoByIccId(list); // System.out.println(simCardVOList.toString()); // simCardService.XunZhongSimRenewal(list, 12); // System.out.println(s); // SimCardVO simCardVO = simCardService.searchByLoop("898607B9102090253556"); // // System.out.println(simCardVO.toString()); simCardService.WuLianSimRenew(list, 1); } @Test public void testRefund() { OrderBasicInfo orderInfo = orderBasicInfoService.getOrderInfoByOrderCode("88000000000001012212171045412218"); orderInfo.setReason("充电异常中止,急停开入"); TransactionRecordsData data = TransactionRecordsData.builder() .transactionCode("88000000000001012212171045412218") .consumptionAmount(String.valueOf(0.00)) .stopReasonMsg(orderInfo.getReason()) .totalElectricity("0") .sharpUsedElectricity("0") .peakUsedElectricity("0") .flatUsedElectricity("0") .valleyUsedElectricity("0") .build(); // orderBasicInfoService.settleOrder(data, orderInfo); } @Test public void testLoginHandler() { String msg = "8800000000001001010f63362d333000000000898604b319227036282200"; byte[] msgBody = BytesUtil.str2Bcd(msg); int startIndex = 0; int length = 7; // 桩编码 byte[] pileSnByte = BytesUtil.copyBytes(msgBody, startIndex, length); String pileSn = BytesUtil.binary(pileSnByte, 16); // log.info("桩号:{}", pileSn); // 桩类型 0 表示直流桩, 1 表示交流桩 startIndex += length; length = 1; byte[] pileTypeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String pileType = BytesUtil.bcd2Str(pileTypeByteArr); // 充电枪数量 startIndex += length; byte[] connectorNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String connectorNum = BytesUtil.bcd2Str(connectorNumByteArr); // 通信协议版本 版本号乘 10,v1.0 表示 0x0A startIndex += length; byte[] communicationVersionByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); // int i = Integer.parseInt(BytesUtil.bcd2Str(communicationVersionByteArr)); // 0F --> 15 BigDecimal bigDecimal = new BigDecimal(BytesUtil.bcd2Str(communicationVersionByteArr)); BigDecimal communicationVersionTemp = bigDecimal.divide(new BigDecimal(10)); String communicationVersion = "v" + communicationVersionTemp; // 程序版本 startIndex += length; length = 8; byte[] programVersionByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String programVersion = BytesUtil.bcd2Str(programVersionByteArr); // 网络连接类型 0x00 SIM 卡 0x01 LAN 0x02 WAN 0x03 其他 startIndex += length; length = 1; byte[] internetConnectionTypeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String internetConnection = BytesUtil.bcd2Str(internetConnectionTypeByteArr); // sim卡 startIndex += length; length = 10; byte[] simCardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String iccid = BytesUtil.bin2HexStr(simCardNumByteArr); // 运营商 0x00 移动 0x02 电信 0x03 联通 0x04 其他 startIndex += length; length = 1; byte[] businessTypeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); String business = BytesUtil.bcd2Str(businessTypeByteArr); LoginRequestData loginRequestData = LoginRequestData.builder() .pileSn(pileSn) .pileType(pileType) .connectorNum(connectorNum) .communicationVersion(communicationVersion) .programVersion(programVersion) .internetConnection(internetConnection) .iccid(iccid) .business(business) .build(); // 结果(默认 0x01:登录失败) byte[] flag = Constants.oneByteArray; // 通过桩编码SN查询数据库,如果有数据,则登录成功,否则登录失败 QueryPileDTO dto = new QueryPileDTO(); dto.setPileSn(pileSn); List list = pileBasicInfoService.queryPileInfos(dto); if (CollectionUtils.isNotEmpty(list)) { flag = Constants.zeroByteArray; // 登录成功,保存桩号和channel的关系 // PileChannelEntity.put(pileSn, channel); // 更改桩和该桩下的枪口状态分别为 在线、空闲 // pileBasicInfoService.updatePileStatus(pileSn, PileStatusEnum.ON_LINE.getValue()); // pileConnectorInfoService.updateConnectorStatusByPileSn(pileSn, PileConnectorDataBaseStatusEnum.FREE.getValue()); // 对时 ProofreadTimeCommand command = ProofreadTimeCommand.builder().pileSn(pileSn).build(); ykcPushCommandService.pushProofreadTimeCommand(command); // 公共方法修改状态 pileBasicInfoService.updateStatus(BytesUtil.bcd2Str(new byte[]{0x01}), pileSn, null, null, null); // 下发二维码 IssueQRCodeCommand issueQRCodeCommand = IssueQRCodeCommand.builder().pileSn(pileSn).build(); ykcPushCommandService.pushIssueQRCodeCommand(issueQRCodeCommand); } // 充电桩使用的sim卡,把信息存库 if (StringUtils.equals("00", internetConnection)) { try { pileBasicInfoService.updatePileSimInfo(pileSn, iccid); } catch (Exception e) { // log.error("更新充电桩sim卡信息失败", e); System.out.println(e.getMessage()); } } // 保存报文 String jsonMsg = JSON.toJSONString(loginRequestData); // pileMsgRecordService.save(pileSn, pileSn, type, jsonMsg, ykcDataProtocol.getHEXString()); // // 消息体 // byte[] messageBody = Bytes.concat(pileSnByte, flag); // return getResult(ykcDataProtocol, messageBody); } @Test public void testGetMemberToken() { String memberId = JWTUtils.getMemberId("eyJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE2NzY1MTY5MzgsImV4cCI6MTY3OTEwODkzOH0.4MwhZIOpnCfQloR7zEm2hwPOh2yyI2qxbBbTcv_SnZ4"); System.out.println(memberId); } /** * 测试更新银行卡 */ @Test public void changeBankCardTest() throws BaseAdaPayException { ChangeBankCardDTO dto = new ChangeBankCardDTO(); dto.setCardId("1018810800000168"); dto.setCardName("海南信祥物业管理有限公司"); dto.setTelNo("17384941319"); dto.setBankCode("88000835"); dto.setBankAcctType("1"); dto.setProvCode("0046"); dto.setAreaCode("4601"); String wechatAppId = wechatAppId1; // 1-删除结算账户信息 // String adapayMemberId = account.getAdapayMemberId(); String adapayMemberId = "ACM69867986"; String settleAccountId = null; AdapayCorpMemberVO adapayCorpMemberVO = adapayService.queryCorpAdapayMemberInfo(adapayMemberId, wechatAppId); if (adapayCorpMemberVO != null) { settleAccountId = adapayCorpMemberVO.getSettleAccountId(); } adapayService.createDeleteSettleAccountRequest(adapayMemberId, settleAccountId, wechatAppId); // 2-使用新账户信息创建结算账户 SettleAccountDTO settleAccountDTO = new SettleAccountDTO(); settleAccountDTO.setCardId(dto.getCardId()); settleAccountDTO.setCardName(dto.getCardName()); settleAccountDTO.setTelNo(dto.getTelNo()); settleAccountDTO.setBankCode(dto.getBankCode()); settleAccountDTO.setBankAcctType(dto.getBankAcctType()); settleAccountDTO.setProvCode(dto.getProvCode()); settleAccountDTO.setAreaCode(dto.getAreaCode()); adapayService.createSettleAccountRequest(settleAccountDTO, adapayMemberId, wechatAppId); } public static void main(String[] args) { String data = "{\"total\":1,\"stationStatusInfo\":{\"operationID\":\"123456789\",\"stationID\":\"111111111111111\",\"connectorStatusInfos\":{\"connectorID\":1,\"equipmentID\":\"10000000000000000000001\",\"status\":4,\"currentA\":0,\"currentB\":0,\"currentC\":0,\"voltageA\":0,\"voltageB\":0,\"voltageC\":0,\"soc\":10}}}"; String dataSecret = "1234567890abcdef"; String dataSecretIv = "1234567890abcdef"; // 加密数据 String encryptData = Cryptos.encrypt(JSON.toJSONString(data), dataSecret, dataSecretIv); String encryptData2 = Cryptos.aesEncrypt(JSON.toJSONString(data), dataSecret, dataSecretIv); System.out.println(StringUtils.equals(encryptData, encryptData2)); String str = "il7B0BSEjFdzpyKzfOFpvg/Se1CP802RItKYFPfSLRxJ3jf0bVl9hvYOEktPAYW2nd7S8MBcyHYyacHKbI" + "Sq5iTmDzG+ivnR+SZJv3USNTYVMz9rCQVSxd0cLlqsJauko79NnwQJbzDTyLooYoIwz75qBOH2/x" + "OMirpeEqRJrF/EQjWekJmGk9RtboXePu2rka+Xm51syBPhiXJAq0GfbfaFu9tNqs/e2Vjja/ltE1M0lq" + "vxfXQ6da6HrThsm5id4ClZFIi0acRfrsPLRixS/IQYtksxghvJwbqOsbIsITail9Ayy4tKcogeEZiOO+4Ed2" + "64NSKmk7l3wKwJLAFjCFogBx8GE3OBz4pqcAn/ydA="; System.out.println(StringUtils.equals(encryptData, str)); System.out.println(StringUtils.equals(encryptData2, str)); } }