PinyinUtil

简介: package com.css.common.util; import java.util.ArrayList; /**  * 拼音信息处理类  *  * @version 1.0  *  */ public class PinyinUtil {    /**   * 拼音集合信息   */  public static ArrayList pinyin = n

package com.css.common.util;

import java.util.ArrayList;

/**
 * 拼音信息处理类
 *
 * @version 1.0
 *
 */
public class PinyinUtil {
 
 /**
  * 拼音集合信息
  */
 public static ArrayList pinyin = new ArrayList(395);
 
 static {
  pinyin.add(new PinyinCode("a", -20319));
  pinyin.add(new PinyinCode("ai", -20317));
  pinyin.add(new PinyinCode("an", -20304));
  pinyin.add(new PinyinCode("ang", -20295));
  pinyin.add(new PinyinCode("ao", -20292));
  pinyin.add(new PinyinCode("ba", -20283));
  pinyin.add(new PinyinCode("bai", -20265));
  pinyin.add(new PinyinCode("ban", -20257));
  pinyin.add(new PinyinCode("bang", -20242));
  pinyin.add(new PinyinCode("bao", -20230));
  pinyin.add(new PinyinCode("bei", -20051));
  pinyin.add(new PinyinCode("ben", -20036));
  pinyin.add(new PinyinCode("beng", -20032));
  pinyin.add(new PinyinCode("bi", -20026));
  pinyin.add(new PinyinCode("bian", -20002));
  pinyin.add(new PinyinCode("biao", -19990));
  pinyin.add(new PinyinCode("bie", -19986));
  pinyin.add(new PinyinCode("bin", -19982));
  pinyin.add(new PinyinCode("bing", -19976));
  pinyin.add(new PinyinCode("bo", -19805));
  pinyin.add(new PinyinCode("bu", -19784));
  pinyin.add(new PinyinCode("ca", -19775));
  pinyin.add(new PinyinCode("cai", -19774));
  pinyin.add(new PinyinCode("can", -19763));
  pinyin.add(new PinyinCode("cang", -19756));
  pinyin.add(new PinyinCode("cao", -19751));
  pinyin.add(new PinyinCode("ce", -19746));
  pinyin.add(new PinyinCode("ceng", -19741));
  pinyin.add(new PinyinCode("cha", -19739));
  pinyin.add(new PinyinCode("chai", -19728));
  pinyin.add(new PinyinCode("chan", -19725));
  pinyin.add(new PinyinCode("chang", -19715));
  pinyin.add(new PinyinCode("chao", -19540));
  pinyin.add(new PinyinCode("che", -19531));
  pinyin.add(new PinyinCode("chen", -19525));
  pinyin.add(new PinyinCode("cheng", -19515));
  pinyin.add(new PinyinCode("chi", -19500));
  pinyin.add(new PinyinCode("chong", -19484));
  pinyin.add(new PinyinCode("chou", -19479));
  pinyin.add(new PinyinCode("chu", -19467));
  pinyin.add(new PinyinCode("chuai", -19289));
  pinyin.add(new PinyinCode("chuan", -19288));
  pinyin.add(new PinyinCode("chuang", -19281));
  pinyin.add(new PinyinCode("chui", -19275));
  pinyin.add(new PinyinCode("chun", -19270));
  pinyin.add(new PinyinCode("chuo", -19263));
  pinyin.add(new PinyinCode("ci", -19261));
  pinyin.add(new PinyinCode("cong", -19249));
  pinyin.add(new PinyinCode("cou", -19243));
  pinyin.add(new PinyinCode("cu", -19242));
  pinyin.add(new PinyinCode("cuan", -19238));
  pinyin.add(new PinyinCode("cui", -19235));
  pinyin.add(new PinyinCode("cun", -19227));
  pinyin.add(new PinyinCode("cuo", -19224));
  pinyin.add(new PinyinCode("da", -19218));
  pinyin.add(new PinyinCode("dai", -19212));
  pinyin.add(new PinyinCode("dan", -19038));
  pinyin.add(new PinyinCode("dang", -19023));
  pinyin.add(new PinyinCode("dao", -19018));
  pinyin.add(new PinyinCode("de", -19006));
  pinyin.add(new PinyinCode("deng", -19003));
  pinyin.add(new PinyinCode("di", -18996));
  pinyin.add(new PinyinCode("dian", -18977));
  pinyin.add(new PinyinCode("diao", -18961));
  pinyin.add(new PinyinCode("die", -18952));
  pinyin.add(new PinyinCode("ding", -18783));
  pinyin.add(new PinyinCode("diu", -18774));
  pinyin.add(new PinyinCode("dong", -18773));
  pinyin.add(new PinyinCode("dou", -18763));
  pinyin.add(new PinyinCode("du", -18756));
  pinyin.add(new PinyinCode("duan", -18741));
  pinyin.add(new PinyinCode("dui", -18735));
  pinyin.add(new PinyinCode("dun", -18731));
  pinyin.add(new PinyinCode("duo", -18722));
  pinyin.add(new PinyinCode("e", -18710));
  pinyin.add(new PinyinCode("en", -18697));
  pinyin.add(new PinyinCode("er", -18696));
  pinyin.add(new PinyinCode("fa", -18526));
  pinyin.add(new PinyinCode("fan", -18518));
  pinyin.add(new PinyinCode("fang", -18501));
  pinyin.add(new PinyinCode("fei", -18490));
  pinyin.add(new PinyinCode("fen", -18478));
  pinyin.add(new PinyinCode("feng", -18463));
  pinyin.add(new PinyinCode("fo", -18448));
  pinyin.add(new PinyinCode("fou", -18447));
  pinyin.add(new PinyinCode("fu", -18446));
  pinyin.add(new PinyinCode("ga", -18239));
  pinyin.add(new PinyinCode("gai", -18237));
  pinyin.add(new PinyinCode("gan", -18231));
  pinyin.add(new PinyinCode("gang", -18220));
  pinyin.add(new PinyinCode("gao", -18211));
  pinyin.add(new PinyinCode("ge", -18201));
  pinyin.add(new PinyinCode("gei", -18184));
  pinyin.add(new PinyinCode("gen", -18183));
  pinyin.add(new PinyinCode("geng", -18181));
  pinyin.add(new PinyinCode("gong", -18012));
  pinyin.add(new PinyinCode("gou", -17997));
  pinyin.add(new PinyinCode("gu", -17988));
  pinyin.add(new PinyinCode("gua", -17970));
  pinyin.add(new PinyinCode("guai", -17964));
  pinyin.add(new PinyinCode("guan", -17961));
  pinyin.add(new PinyinCode("guang", -17950));
  pinyin.add(new PinyinCode("gui", -17947));
  pinyin.add(new PinyinCode("gun", -17931));
  pinyin.add(new PinyinCode("guo", -17928));
  pinyin.add(new PinyinCode("ha", -17922));
  pinyin.add(new PinyinCode("hai", -17759));
  pinyin.add(new PinyinCode("han", -17752));
  pinyin.add(new PinyinCode("hang", -17733));
  pinyin.add(new PinyinCode("hao", -17730));
  pinyin.add(new PinyinCode("he", -17721));
  pinyin.add(new PinyinCode("hei", -17703));
  pinyin.add(new PinyinCode("hen", -17701));
  pinyin.add(new PinyinCode("heng", -17697));
  pinyin.add(new PinyinCode("hong", -17692));
  pinyin.add(new PinyinCode("hou", -17683));
  pinyin.add(new PinyinCode("hu", -17676));
  pinyin.add(new PinyinCode("hua", -17496));
  pinyin.add(new PinyinCode("huai", -17487));
  pinyin.add(new PinyinCode("huan", -17482));
  pinyin.add(new PinyinCode("huang", -17468));
  pinyin.add(new PinyinCode("hui", -17454));
  pinyin.add(new PinyinCode("hun", -17433));
  pinyin.add(new PinyinCode("huo", -17427));
  pinyin.add(new PinyinCode("ji", -17417));
  pinyin.add(new PinyinCode("jia", -17202));
  pinyin.add(new PinyinCode("jian", -17185));
  pinyin.add(new PinyinCode("jiang", -16983));
  pinyin.add(new PinyinCode("jiao", -16970));
  pinyin.add(new PinyinCode("jie", -16942));
  pinyin.add(new PinyinCode("jin", -16915));
  pinyin.add(new PinyinCode("jing", -16733));
  pinyin.add(new PinyinCode("jiong", -16708));
  pinyin.add(new PinyinCode("jiu", -16706));
  pinyin.add(new PinyinCode("ju", -16689));
  pinyin.add(new PinyinCode("juan", -16664));
  pinyin.add(new PinyinCode("jue", -16657));
  pinyin.add(new PinyinCode("jun", -16647));
  pinyin.add(new PinyinCode("ka", -16474));
  pinyin.add(new PinyinCode("kai", -16470));
  pinyin.add(new PinyinCode("kan", -16465));
  pinyin.add(new PinyinCode("kang", -16459));
  pinyin.add(new PinyinCode("kao", -16452));
  pinyin.add(new PinyinCode("ke", -16448));
  pinyin.add(new PinyinCode("ken", -16433));
  pinyin.add(new PinyinCode("keng", -16429));
  pinyin.add(new PinyinCode("kong", -16427));
  pinyin.add(new PinyinCode("kou", -16423));
  pinyin.add(new PinyinCode("ku", -16419));
  pinyin.add(new PinyinCode("kua", -16412));
  pinyin.add(new PinyinCode("kuai", -16407));
  pinyin.add(new PinyinCode("kuan", -16403));
  pinyin.add(new PinyinCode("kuang", -16401));
  pinyin.add(new PinyinCode("kui", -16393));
  pinyin.add(new PinyinCode("kun", -16220));
  pinyin.add(new PinyinCode("kuo", -16216));
  pinyin.add(new PinyinCode("la", -16212));
  pinyin.add(new PinyinCode("lai", -16205));
  pinyin.add(new PinyinCode("lan", -16202));
  pinyin.add(new PinyinCode("lang", -16187));
  pinyin.add(new PinyinCode("lao", -16180));
  pinyin.add(new PinyinCode("le", -16171));
  pinyin.add(new PinyinCode("lei", -16169));
  pinyin.add(new PinyinCode("leng", -16158));
  pinyin.add(new PinyinCode("li", -16155));
  pinyin.add(new PinyinCode("lia", -15959));
  pinyin.add(new PinyinCode("lian", -15958));
  pinyin.add(new PinyinCode("liang", -15944));
  pinyin.add(new PinyinCode("liao", -15933));
  pinyin.add(new PinyinCode("lie", -15920));
  pinyin.add(new PinyinCode("lin", -15915));
  pinyin.add(new PinyinCode("ling", -15903));
  pinyin.add(new PinyinCode("liu", -15889));
  pinyin.add(new PinyinCode("long", -15878));
  pinyin.add(new PinyinCode("lou", -15707));
  pinyin.add(new PinyinCode("lu", -15701));
  pinyin.add(new PinyinCode("lv", -15681));
  pinyin.add(new PinyinCode("luan", -15667));
  pinyin.add(new PinyinCode("lue", -15661));
  pinyin.add(new PinyinCode("lun", -15659));
  pinyin.add(new PinyinCode("luo", -15652));
  pinyin.add(new PinyinCode("ma", -15640));
  pinyin.add(new PinyinCode("mai", -15631));
  pinyin.add(new PinyinCode("man", -15625));
  pinyin.add(new PinyinCode("mang", -15454));
  pinyin.add(new PinyinCode("mao", -15448));
  pinyin.add(new PinyinCode("me", -15436));
  pinyin.add(new PinyinCode("mei", -15435));
  pinyin.add(new PinyinCode("men", -15419));
  pinyin.add(new PinyinCode("meng", -15416));
  pinyin.add(new PinyinCode("mi", -15408));
  pinyin.add(new PinyinCode("mian", -15394));
  pinyin.add(new PinyinCode("miao", -15385));
  pinyin.add(new PinyinCode("mie", -15377));
  pinyin.add(new PinyinCode("min", -15375));
  pinyin.add(new PinyinCode("ming", -15369));
  pinyin.add(new PinyinCode("miu", -15363));
  pinyin.add(new PinyinCode("mo", -15362));
  pinyin.add(new PinyinCode("mou", -15183));
  pinyin.add(new PinyinCode("mu", -15180));
  pinyin.add(new PinyinCode("na", -15165));
  pinyin.add(new PinyinCode("nai", -15158));
  pinyin.add(new PinyinCode("nan", -15153));
  pinyin.add(new PinyinCode("nang", -15150));
  pinyin.add(new PinyinCode("nao", -15149));
  pinyin.add(new PinyinCode("ne", -15144));
  pinyin.add(new PinyinCode("nei", -15143));
  pinyin.add(new PinyinCode("nen", -15141));
  pinyin.add(new PinyinCode("neng", -15140));
  pinyin.add(new PinyinCode("ni", -15139));
  pinyin.add(new PinyinCode("nian", -15128));
  pinyin.add(new PinyinCode("niang", -15121));
  pinyin.add(new PinyinCode("niao", -15119));
  pinyin.add(new PinyinCode("nie", -15117));
  pinyin.add(new PinyinCode("nin", -15110));
  pinyin.add(new PinyinCode("ning", -15109));
  pinyin.add(new PinyinCode("niu", -14941));
  pinyin.add(new PinyinCode("nong", -14937));
  pinyin.add(new PinyinCode("nu", -14933));
  pinyin.add(new PinyinCode("nv", -14930));
  pinyin.add(new PinyinCode("nuan", -14929));
  pinyin.add(new PinyinCode("nue", -14928));
  pinyin.add(new PinyinCode("nuo", -14926));
  pinyin.add(new PinyinCode("o", -14922));
  pinyin.add(new PinyinCode("ou", -14921));
  pinyin.add(new PinyinCode("pa", -14914));
  pinyin.add(new PinyinCode("pai", -14908));
  pinyin.add(new PinyinCode("pan", -14902));
  pinyin.add(new PinyinCode("pang", -14894));
  pinyin.add(new PinyinCode("pao", -14889));
  pinyin.add(new PinyinCode("pei", -14882));
  pinyin.add(new PinyinCode("pen", -14873));
  pinyin.add(new PinyinCode("peng", -14871));
  pinyin.add(new PinyinCode("pi", -14857));
  pinyin.add(new PinyinCode("pian", -14678));
  pinyin.add(new PinyinCode("piao", -14674));
  pinyin.add(new PinyinCode("pie", -14670));
  pinyin.add(new PinyinCode("pin", -14668));
  pinyin.add(new PinyinCode("ping", -14663));
  pinyin.add(new PinyinCode("po", -14654));
  pinyin.add(new PinyinCode("pu", -14645));
  pinyin.add(new PinyinCode("qi", -14630));
  pinyin.add(new PinyinCode("qia", -14594));
  pinyin.add(new PinyinCode("qian", -14429));
  pinyin.add(new PinyinCode("qiang", -14407));
  pinyin.add(new PinyinCode("qiao", -14399));
  pinyin.add(new PinyinCode("qie", -14384));
  pinyin.add(new PinyinCode("qin", -14379));
  pinyin.add(new PinyinCode("qing", -14368));
  pinyin.add(new PinyinCode("qiong", -14355));
  pinyin.add(new PinyinCode("qiu", -14353));
  pinyin.add(new PinyinCode("qu", -14345));
  pinyin.add(new PinyinCode("quan", -14170));
  pinyin.add(new PinyinCode("que", -14159));
  pinyin.add(new PinyinCode("qun", -14151));
  pinyin.add(new PinyinCode("ran", -14149));
  pinyin.add(new PinyinCode("rang", -14145));
  pinyin.add(new PinyinCode("rao", -14140));
  pinyin.add(new PinyinCode("re", -14137));
  pinyin.add(new PinyinCode("ren", -14135));
  pinyin.add(new PinyinCode("reng", -14125));
  pinyin.add(new PinyinCode("ri", -14123));
  pinyin.add(new PinyinCode("rong", -14122));
  pinyin.add(new PinyinCode("rou", -14112));
  pinyin.add(new PinyinCode("ru", -14109));
  pinyin.add(new PinyinCode("ruan", -14099));
  pinyin.add(new PinyinCode("rui", -14097));
  pinyin.add(new PinyinCode("run", -14094));
  pinyin.add(new PinyinCode("ruo", -14092));
  pinyin.add(new PinyinCode("sa", -14090));
  pinyin.add(new PinyinCode("sai", -14087));
  pinyin.add(new PinyinCode("san", -14083));
  pinyin.add(new PinyinCode("sang", -13917));
  pinyin.add(new PinyinCode("sao", -13914));
  pinyin.add(new PinyinCode("se", -13910));
  pinyin.add(new PinyinCode("sen", -13907));
  pinyin.add(new PinyinCode("seng", -13906));
  pinyin.add(new PinyinCode("sha", -13905));
  pinyin.add(new PinyinCode("shai", -13896));
  pinyin.add(new PinyinCode("shan", -13894));
  pinyin.add(new PinyinCode("shang", -13878));
  pinyin.add(new PinyinCode("shao", -13870));
  pinyin.add(new PinyinCode("she", -13859));
  pinyin.add(new PinyinCode("shen", -13847));
  pinyin.add(new PinyinCode("sheng", -13831));
  pinyin.add(new PinyinCode("shi", -13658));
  pinyin.add(new PinyinCode("shou", -13611));
  pinyin.add(new PinyinCode("shu", -13601));
  pinyin.add(new PinyinCode("shua", -13406));
  pinyin.add(new PinyinCode("shuai", -13404));
  pinyin.add(new PinyinCode("shuan", -13400));
  pinyin.add(new PinyinCode("shuang", -13398));
  pinyin.add(new PinyinCode("shui", -13395));
  pinyin.add(new PinyinCode("shun", -13391));
  pinyin.add(new PinyinCode("shuo", -13387));
  pinyin.add(new PinyinCode("si", -13383));
  pinyin.add(new PinyinCode("song", -13367));
  pinyin.add(new PinyinCode("sou", -13359));
  pinyin.add(new PinyinCode("su", -13356));
  pinyin.add(new PinyinCode("suan", -13343));
  pinyin.add(new PinyinCode("sui", -13340));
  pinyin.add(new PinyinCode("sun", -13329));
  pinyin.add(new PinyinCode("suo", -13326));
  pinyin.add(new PinyinCode("ta", -13318));
  pinyin.add(new PinyinCode("tai", -13147));
  pinyin.add(new PinyinCode("tan", -13138));
  pinyin.add(new PinyinCode("tang", -13120));
  pinyin.add(new PinyinCode("tao", -13107));
  pinyin.add(new PinyinCode("te", -13096));
  pinyin.add(new PinyinCode("teng", -13095));
  pinyin.add(new PinyinCode("ti", -13091));
  pinyin.add(new PinyinCode("tian", -13076));
  pinyin.add(new PinyinCode("tiao", -13068));
  pinyin.add(new PinyinCode("tie", -13063));
  pinyin.add(new PinyinCode("ting", -13060));
  pinyin.add(new PinyinCode("tong", -12888));
  pinyin.add(new PinyinCode("tou", -12875));
  pinyin.add(new PinyinCode("tu", -12871));
  pinyin.add(new PinyinCode("tuan", -12860));
  pinyin.add(new PinyinCode("tui", -12858));
  pinyin.add(new PinyinCode("tun", -12852));
  pinyin.add(new PinyinCode("tuo", -12849));
  pinyin.add(new PinyinCode("wa", -12838));
  pinyin.add(new PinyinCode("wai", -12831));
  pinyin.add(new PinyinCode("wan", -12829));
  pinyin.add(new PinyinCode("wang", -12812));
  pinyin.add(new PinyinCode("wei", -12802));
  pinyin.add(new PinyinCode("wen", -12607));
  pinyin.add(new PinyinCode("weng", -12597));
  pinyin.add(new PinyinCode("wo", -12594));
  pinyin.add(new PinyinCode("wu", -12585));
  pinyin.add(new PinyinCode("xi", -12556));
  pinyin.add(new PinyinCode("xia", -12359));
  pinyin.add(new PinyinCode("xian", -12346));
  pinyin.add(new PinyinCode("xiang", -12320));
  pinyin.add(new PinyinCode("xiao", -12300));
  pinyin.add(new PinyinCode("xie", -12120));
  pinyin.add(new PinyinCode("xin", -12099));
  pinyin.add(new PinyinCode("xing", -12089));
  pinyin.add(new PinyinCode("xiong", -12074));
  pinyin.add(new PinyinCode("xiu", -12067));
  pinyin.add(new PinyinCode("xu", -12058));
  pinyin.add(new PinyinCode("xuan", -12039));
  pinyin.add(new PinyinCode("xue", -11867));
  pinyin.add(new PinyinCode("xun", -11861));
  pinyin.add(new PinyinCode("ya", -11847));
  pinyin.add(new PinyinCode("yan", -11831));
  pinyin.add(new PinyinCode("yang", -11798));
  pinyin.add(new PinyinCode("yao", -11781));
  pinyin.add(new PinyinCode("ye", -11604));
  pinyin.add(new PinyinCode("yi", -11589));
  pinyin.add(new PinyinCode("yin", -11536));
  pinyin.add(new PinyinCode("ying", -11358));
  pinyin.add(new PinyinCode("yo", -11340));
  pinyin.add(new PinyinCode("yong", -11339));
  pinyin.add(new PinyinCode("you", -11324));
  pinyin.add(new PinyinCode("yu", -11303));
  pinyin.add(new PinyinCode("yuan", -11097));
  pinyin.add(new PinyinCode("yue", -11077));
  pinyin.add(new PinyinCode("yun", -11067));
  pinyin.add(new PinyinCode("za", -11055));
  pinyin.add(new PinyinCode("zai", -11052));
  pinyin.add(new PinyinCode("zan", -11045));
  pinyin.add(new PinyinCode("zang", -11041));
  pinyin.add(new PinyinCode("zao", -11038));
  pinyin.add(new PinyinCode("ze", -11024));
  pinyin.add(new PinyinCode("zei", -11020));
  pinyin.add(new PinyinCode("zen", -11019));
  pinyin.add(new PinyinCode("zeng", -11018));
  pinyin.add(new PinyinCode("zha", -11014));
  pinyin.add(new PinyinCode("zhai", -10838));
  pinyin.add(new PinyinCode("zhan", -10832));
  pinyin.add(new PinyinCode("zhang", -10815));
  pinyin.add(new PinyinCode("zhao", -10800));
  pinyin.add(new PinyinCode("zhe", -10790));
  pinyin.add(new PinyinCode("zhen", -10780));
  pinyin.add(new PinyinCode("zheng", -10764));
  pinyin.add(new PinyinCode("zhi", -10587));
  pinyin.add(new PinyinCode("zhong", -10544));
  pinyin.add(new PinyinCode("zhou", -10533));
  pinyin.add(new PinyinCode("zhu", -10519));
  pinyin.add(new PinyinCode("zhua", -10331));
  pinyin.add(new PinyinCode("zhuai", -10329));
  pinyin.add(new PinyinCode("zhuan", -10328));
  pinyin.add(new PinyinCode("zhuang", -10322));
  pinyin.add(new PinyinCode("zhui", -10315));
  pinyin.add(new PinyinCode("zhun", -10309));
  pinyin.add(new PinyinCode("zhuo", -10307));
  pinyin.add(new PinyinCode("zi", -10296));
  pinyin.add(new PinyinCode("zong", -10281));
  pinyin.add(new PinyinCode("zou", -10274));
  pinyin.add(new PinyinCode("zu", -10270));
  pinyin.add(new PinyinCode("zuan", -10262));
  pinyin.add(new PinyinCode("zui", -10260));
  pinyin.add(new PinyinCode("zun", -10256));
  pinyin.add(new PinyinCode("zuo", -10254));
  }

  //GB2312的字符集的笔划列表,可以参考gb2312字符全集
  public static int[] gb2312StrokeCount = {
      /* B0 */
      10, 7, 10, 10, 8, 10, 9, 11,
      17, 14, 13, 5, 13, 10, 12, 15,
      10, 6, 10, 9, 13, 8, 10, 10,
      8, 8, 10, 5, 10, 14, 16, 9,
      12, 12, 15, 15, 7, 10, 5, 5,
      7, 10, 2, 9, 4, 8, 12, 13,
      7, 10, 7, 21, 10, 8, 5, 9,
      6, 13, 8, 8, 9, 13, 12, 10,
      13, 7, 10, 10, 8, 8, 7, 8,
      7, 19, 5, 4, 8, 5, 9, 10,
      14, 14, 9, 12, 15, 10, 15, 12,
      12, 8, 9, 5, 15, 10,
      /* B1 */
      16, 13, 9, 12, 8, 8, 8, 7,
      15, 10, 13, 19, 8, 13, 12, 8,
      5, 12, 9, 4, 9, 10, 7, 8,
      12, 12, 10, 8, 8, 5, 11, 11,
      11, 9, 9, 18, 9, 12, 14, 4,
      13, 10, 8, 14, 13, 14, 6, 10,
      9, 4, 7, 13, 6, 11, 14, 5,
      13, 16, 17, 16, 9, 18, 5, 12,
      8, 9, 9, 8, 4, 16, 16, 17,
      12, 9, 11, 15, 8, 19, 16, 7,
      15, 11, 12, 16, 13, 10, 13, 7,
      6, 9, 5, 8, 9, 9,
      /* B2 */
      10, 6, 8, 11, 15, 8, 10, 8,
      12, 9, 13, 10, 14, 7, 8, 11,
      11, 14, 12, 8, 7, 10, 2, 10,
      7, 11, 4, 5, 7, 19, 10, 8,
      17, 11, 12, 7, 3, 7, 12, 15,
      8, 11, 11, 14, 16, 8, 10, 9,
      11, 11, 7, 7, 10, 4, 7, 17,
      16, 16, 15, 11, 9, 8, 12, 8,
      5, 9, 7, 19, 12, 3, 9, 9,
      9, 14, 12, 14, 7, 9, 8, 8,
      10, 10, 12, 11, 14, 12, 11, 13,
      11, 6, 11, 19, 8, 11,
      /* B3 */
      6, 9, 11, 4, 11, 7, 2, 12,
      8, 11, 10, 12, 7, 9, 12, 15,
      15, 11, 7, 8, 4, 7, 15, 12,
      7, 15, 10, 6, 7, 6, 11, 7,
      7, 7, 12, 8, 15, 10, 9, 16,
      6, 7, 10, 12, 12, 15, 8, 8,
      10, 10, 10, 6, 13, 9, 11, 6,
      7, 6, 6, 10, 8, 8, 4, 7,
      10, 5, 9, 6, 6, 6, 11, 8,
      8, 13, 12, 14, 13, 13, 13, 4,
      11, 14, 4, 10, 7, 5, 16, 12,
      18, 12, 13, 12, 9, 13,
      /* B4 */
      10, 12, 24, 13, 13, 5, 12, 3,
      9, 13, 7, 11, 12, 7, 9, 12,
      15, 7, 6, 6, 7, 8, 11, 13,
      8, 9, 13, 15, 10, 11, 7, 21,
      18, 11, 11, 9, 14, 14, 13, 13,
      10, 7, 6, 8, 12, 6, 15, 12,
      7, 5, 4, 5, 11, 11, 15, 17,
      9, 19, 16, 12, 14, 11, 13, 10,
      13, 14, 11, 14, 7, 6, 3, 14,
      15, 12, 11, 10, 13, 12, 6, 12,
      14, 5, 3, 7, 4, 12, 17, 9,
      9, 5, 9, 11, 9, 11,
      /* B5 */
      9, 10, 8, 4, 8, 10, 11, 9,
      5, 12, 7, 11, 11, 8, 11, 11,
      6, 9, 10, 9, 10, 2, 10, 17,
      10, 7, 11, 6, 8, 15, 11, 12,
      11, 15, 11, 8, 19, 6, 12, 12,
      17, 14, 4, 12, 7, 14, 8, 10,
      11, 7, 10, 14, 14, 8, 8, 6,
      12, 11, 9, 7, 10, 12, 16, 11,
      13, 13, 9, 8, 16, 9, 5, 7,
      7, 8, 11, 12, 11, 13, 13, 5,
      16, 10, 2, 11, 6, 8, 10, 12,
      10, 14, 15, 8, 11, 13,
      /* B6 */
      2, 7, 5, 7, 8, 12, 13, 8,
      4, 6, 5, 5, 12, 15, 6, 9,
      8, 9, 7, 9, 11, 7, 4, 9,
      7, 10, 12, 10, 13, 9, 12, 9,
      10, 11, 13, 12, 7, 14, 7, 9,
      12, 7, 14, 12, 14, 9, 11, 12,
      11, 7, 4, 5, 15, 7, 19, 12,
      10, 7, 9, 9, 12, 11, 9, 6,
      6, 9, 13, 6, 13, 11, 8, 12,
      11, 13, 10, 12, 9, 15, 6, 10,
      10, 4, 7, 12, 11, 10, 10, 6,
      2, 6, 5, 9, 9, 2,
      /* B7 */
      9, 5, 9, 12, 6, 4, 9, 8,
      9, 18, 6, 12, 18, 15, 8, 8,
      17, 3, 10, 4, 7, 8, 8, 5,
      7, 7, 7, 7, 4, 8, 8, 6,
      7, 6, 6, 7, 8, 11, 8, 11,
      3, 8, 10, 10, 7, 8, 8, 8,
      9, 7, 11, 7, 8, 4, 7, 7,
      12, 7, 10, 8, 6, 8, 12, 12,
      4, 9, 8, 13, 10, 12, 4, 9,
      11, 10, 5, 13, 6, 8, 4, 7,
      7, 4, 15, 8, 14, 7, 8, 13,
      12, 9, 11, 6, 9, 8,
      /* B8 */
      10, 11, 13, 11, 5, 7, 7, 11,
      10, 10, 8, 11, 12, 8, 14, 9,
      11, 18, 12, 9, 12, 5, 8, 4,
      13, 6, 12, 4, 7, 6, 13, 8,
      15, 14, 8, 7, 13, 9, 11, 12,
      3, 5, 7, 9, 9, 7, 10, 13,
      8, 11, 21, 4, 6, 9, 9, 7,
      7, 7, 12, 7, 16, 10, 10, 14,
      10, 16, 13, 15, 15, 7, 10, 14,
      12, 4, 11, 10, 8, 12, 9, 12,
      10, 12, 9, 12, 11, 3, 6, 9,
      10, 13, 10, 7, 8, 19,
      /* B9 */
      10, 10, 11, 3, 7, 5, 10, 11,
      8, 10, 4, 9, 3, 6, 7, 9,
      7, 6, 9, 4, 7, 8, 8, 9,
      8, 8, 11, 12, 11, 8, 14, 7,
      8, 8, 8, 13, 5, 11, 9, 7,
      8, 9, 10, 8, 12, 8, 5, 9,
      14, 9, 13, 8, 8, 8, 12, 6,
      8, 9, 6, 14, 11, 23, 12, 20,
      8, 6, 3, 10, 13, 8, 6, 11,
      5, 7, 9, 6, 9, 8, 9, 10,
      8, 13, 9, 8, 12, 13, 12, 12,
      10, 8, 8, 14, 6, 9,
      15, 9, 10, 10, 6, 10, 9, 12,
      14, 7, 12, 7, 11, 12, 8, 12,
      7, 16, 16, 10, 7, 16, 10, 11,
      6, 5, 5, 8, 10, 17, 17, 14,
      11, 9, 6, 10, 5, 10, 8, 12,
      10, 11, 10, 5, 8, 7, 6, 11,
      13, 9, 8, 11, 14, 14, 15, 9,
      15, 12, 11, 9, 9, 9, 10, 7,
      15, 16, 9, 8, 9, 10, 9, 11,
      9, 7, 5, 6, 12, 9, 12, 7,
      9, 10, 6, 8, 5, 8, 13, 10,
      12, 9, 15, 8, 15, 12,
      /* BB */
      8, 8, 11, 7, 4, 7, 4, 7,
      9, 6, 12, 12, 8, 6, 4, 8,
      13, 9, 7, 11, 7, 6, 8, 10,
      7, 12, 10, 11, 10, 12, 13, 11,
      10, 9, 4, 9, 12, 11, 16, 15,
      17, 9, 11, 12, 13, 10, 13, 9,
      11, 6, 9, 12, 17, 9, 12, 6,
      13, 10, 15, 5, 12, 11, 10, 11,
      6, 10, 5, 6, 9, 9, 9, 8,
      11, 13, 9, 11, 17, 9, 6, 4,
      10, 8, 12, 16, 8, 11, 5, 6,
      11, 6, 13, 15, 10, 14,
      /* BC */
      6, 5, 9, 16, 4, 7, 10, 11,
      12, 6, 7, 12, 13, 20, 12, 3,
      9, 10, 6, 7, 13, 6, 9, 2,
      10, 3, 13, 7, 16, 8, 6, 11,
      8, 11, 9, 11, 11, 4, 5, 9,
      7, 7, 7, 10, 6, 14, 9, 6,
      8, 10, 5, 9, 12, 10, 5, 10,
      11, 15, 6, 9, 8, 13, 7, 10,
      7, 6, 11, 7, 13, 10, 8, 8,
      6, 12, 9, 11, 9, 14, 12, 8,
      10, 13, 9, 11, 11, 9, 14, 13,
      12, 9, 4, 13, 15, 6,
      /* BD */
      10, 10, 9, 8, 11, 12, 10, 8,
      15, 9, 9, 10, 6, 19, 12, 10,
      9, 6, 6, 13, 8, 15, 12, 17,
      12, 10, 6, 8, 9, 9, 9, 20,
      12, 11, 11, 8, 11, 9, 7, 9,
      16, 9, 13, 11, 14, 10, 10, 5,
      12, 12, 11, 9, 11, 12, 6, 14,
      7, 5, 10, 8, 11, 13, 14, 9,
      9, 13, 8, 7, 17, 7, 9, 10,
      4, 9, 9, 8, 3, 12, 4, 8,
      4, 9, 18, 10, 13, 4, 13, 7,
      13, 10, 13, 7, 10, 10,
      /* BE */
      6, 7, 9, 14, 8, 13, 12, 16,
      8, 11, 14, 13, 8, 4, 19, 12,
      11, 14, 14, 12, 16, 8, 10, 13,
      11, 10, 8, 9, 12, 12, 7, 5,
      7, 9, 3, 7, 2, 10, 11, 11,
      5, 6, 13, 8, 12, 8, 17, 8,
      8, 10, 8, 8, 11, 7, 8, 9,
      9, 8, 14, 7, 11, 4, 8, 11,
      15, 13, 10, 5, 11, 8, 10, 10,
      12, 10, 10, 11, 8, 10, 15, 23,
      7, 11, 10, 17, 9, 6, 6, 9,
      7, 11, 9, 6, 7, 10,
      /* BF */
      9, 12, 10, 9, 10, 12, 8, 5,
      9, 4, 12, 13, 8, 12, 5, 12,
      11, 7, 9, 9, 11, 14, 17, 6,
      7, 4, 8, 6, 9, 10, 15, 8,
      8, 9, 12, 15, 14, 9, 7, 9,
      5, 12, 7, 8, 9, 10, 8, 11,
      9, 10, 7, 7, 8, 10, 4, 11,
      7, 3, 6, 11, 9, 10, 13, 8,
      14, 7, 12, 6, 9, 9, 13, 10,
      7, 13, 8, 7, 10, 12, 6, 12,
      7, 10, 8, 11, 7, 7, 3, 11,
      8, 13, 12, 9, 13, 11,
      /* C0 */
      12, 12, 12, 8, 8, 10, 7, 9,
      6, 13, 12, 8, 8, 12, 14, 12,
      14, 11, 10, 7, 13, 13, 11, 9,
      8, 16, 12, 5, 15, 14, 12, 9,
      16, 12, 9, 13, 11, 12, 10, 11,
      8, 10, 10, 10, 7, 7, 6, 8,
      9, 13, 10, 10, 11, 5, 13, 18,
      16, 15, 11, 17, 9, 16, 6, 9,
      8, 12, 13, 7, 9, 11, 11, 15,
      16, 10, 10, 13, 11, 7, 7, 15,
      5, 10, 9, 6, 10, 7, 5, 7,
      10, 4, 7, 12, 8, 9,
      /* C1 */
      12, 5, 11, 7, 8, 2, 14, 10,
      9, 12, 10, 7, 18, 13, 8, 10,
      8, 11, 11, 12, 10, 9, 8, 13,
      10, 11, 13, 7, 7, 11, 12, 12,
      9, 10, 15, 11, 14, 7, 16, 14,
      5, 15, 2, 14, 17, 14, 10, 6,
      12, 10, 6, 11, 12, 8, 17, 16,
      9, 7, 20, 11, 15, 10, 7, 8,
      9, 11, 13, 13, 10, 7, 11, 10,
      7, 10, 8, 11, 5, 5, 13, 11,
      14, 12, 13, 10, 6, 15, 10, 9,
      4, 5, 11, 8, 11, 16,
      /* C2 */
      11, 8, 8, 7, 13, 9, 12, 15,
      14, 8, 7, 5, 11, 7, 8, 11,
      7, 8, 12, 19, 13, 21, 13, 10,
      11, 16, 12, 8, 7, 15, 7, 6,
      11, 8, 10, 15, 12, 12, 10, 12,
      9, 11, 13, 11, 9, 10, 9, 13,
      7, 7, 11, 11, 7, 8, 6, 4,
      7, 7, 6, 11, 17, 8, 11, 13,
      14, 14, 13, 12, 9, 9, 9, 6,
      11, 7, 8, 9, 3, 9, 14, 6,
      10, 6, 7, 8, 6, 9, 15, 14,
      12, 13, 14, 11, 14, 14,
      /* C3 */
      13, 6, 9, 8, 8, 6, 10, 11,
      8, 13, 4, 5, 10, 5, 8, 9,
      12, 14, 9, 3, 8, 8, 11, 14,
      15, 13, 7, 9, 12, 14, 7, 9,
      9, 12, 8, 12, 3, 7, 5, 11,
      13, 17, 13, 13, 11, 11, 8, 11,
      15, 19, 17, 9, 11, 8, 6, 10,
      8, 8, 14, 11, 12, 12, 10, 11,
      11, 7, 9, 10, 12, 9, 8, 11,
      13, 17, 9, 12, 8, 7, 14, 5,
      5, 8, 5, 11, 10, 9, 8, 16,
      8, 11, 6, 8, 13, 13,
      /* C4 */
      14, 19, 14, 14, 16, 15, 20, 8,
      5, 10, 15, 16, 8, 13, 13, 8,
      11, 6, 9, 8, 7, 7, 8, 5,
      13, 14, 13, 12, 14, 4, 5, 13,
      8, 16, 10, 9, 7, 9, 6, 9,
      7, 6, 2, 5, 9, 8, 9, 7,
      10, 22, 9, 10, 9, 8, 11, 8,
      10, 4, 14, 10, 8, 16, 10, 8,
      5, 7, 7, 10, 13, 9, 13, 14,
      8, 6, 15, 15, 11, 8, 10, 14,
      5, 7, 10, 10, 19, 11, 15, 15,
      10, 11, 9, 8, 16, 5,
      /* C5 */
      8, 8, 4, 7, 9, 7, 10, 9,
      6, 7, 5, 7, 9, 3, 13, 9,
      8, 9, 17, 20, 10, 10, 8, 9,
      8, 18, 7, 11, 7, 11, 9, 8,
      8, 8, 12, 8, 11, 12, 11, 12,
      9, 19, 15, 11, 15, 9, 10, 7,
      9, 6, 8, 10, 16, 9, 7, 8,
      7, 9, 10, 12, 8, 8, 9, 11,
      14, 12, 10, 10, 8, 7, 12, 9,
      10, 8, 11, 15, 12, 13, 12, 13,
      16, 16, 8, 13, 11, 13, 8, 9,
      21, 7, 8, 15, 12, 9,
      /* C6 */
      11, 12, 10, 5, 4, 12, 15, 7,
      20, 15, 11, 4, 12, 15, 14, 16,
      11, 14, 16, 9, 13, 8, 9, 13,
      6, 8, 8, 11, 5, 8, 10, 7,
      9, 8, 8, 11, 11, 10, 14, 8,
      11, 10, 5, 12, 4, 10, 12, 11,
      13, 10, 6, 10, 12, 10, 14, 19,
      18, 12, 12, 10, 11, 8, 2, 10,
      14, 9, 7, 8, 12, 8, 8, 11,
      11, 10, 6, 14, 8, 6, 11, 10,
      6, 3, 6, 7, 9, 9, 16, 4,
      6, 7, 7, 8, 5, 11,
      /* C7 */
      9, 9, 9, 6, 8, 10, 3, 6,
      13, 5, 12, 11, 16, 10, 10, 9,
      15, 13, 8, 15, 11, 12, 4, 14,
      8, 7, 12, 7, 14, 14, 12, 7,
      16, 14, 14, 10, 10, 17, 6, 8,
      5, 16, 15, 12, 10, 9, 10, 4,
      8, 5, 8, 9, 9, 9, 9, 10,
      12, 13, 7, 15, 12, 13, 7, 8,
      9, 9, 10, 10, 11, 16, 12, 12,
      11, 8, 10, 6, 12, 7, 9, 5,
      7, 11, 7, 5, 9, 8, 12, 4,
      11, 6, 11, 8, 7, 11,
      /* C8 */
      8, 11, 17, 15, 5, 11, 23, 6,
      16, 10, 6, 11, 10, 4, 8, 4,
      10, 8, 16, 7, 13, 14, 12, 11,
      12, 13, 12, 16, 5, 9, 22, 20,
      20, 20, 5, 9, 7, 9, 12, 10,
      4, 4, 2, 7, 7, 6, 4, 3,
      7, 6, 5, 4, 4, 6, 9, 13,
      9, 16, 14, 13, 10, 9, 4, 12,
      9, 6, 9, 20, 16, 17, 6, 10,
      8, 6, 2, 15, 8, 6, 15, 13,
      12, 7, 10, 8, 10, 15, 9, 11,
      13, 17, 13, 14, 3, 8,
      /* C9 */
      6, 12, 10, 13, 8, 12, 12, 6,
      12, 13, 6, 10, 12, 14, 10, 9,
      6, 8, 7, 7, 13, 11, 13, 12,
      10, 9, 8, 7, 3, 7, 14, 8,
      5, 8, 16, 17, 16, 12, 6, 10,
      15, 14, 6, 11, 12, 10, 3, 8,
      14, 11, 10, 12, 10, 6, 3, 14,
      4, 10, 7, 8, 11, 11, 11, 6,
      8, 11, 13, 10, 13, 10, 7, 6,
      10, 5, 8, 7, 7, 11, 10, 8,
      9, 7, 8, 11, 9, 8, 13, 11,
      7, 5, 12, 9, 4, 11,
      /* CA */
      9, 11, 12, 9, 5, 6, 5, 9,
      9, 12, 8, 3, 8, 2, 5, 9,
      7, 4, 9, 9, 8, 7, 5, 5,
      8, 9, 8, 8, 6, 5, 3, 5,
      9, 8, 9, 14, 10, 8, 9, 13,
      16, 9, 5, 8, 12, 8, 4, 5,
      9, 9, 8, 8, 6, 4, 9, 6,
      7, 11, 11, 8, 14, 11, 15, 8,
      11, 10, 7, 13, 8, 12, 11, 12,
      4, 12, 11, 15, 16, 12, 17, 13,
      13, 12, 13, 12, 5, 8, 9, 7,
      6, 9, 14, 11, 13, 14,
      /* CB */
      10, 8, 9, 14, 10, 5, 5, 10,
      9, 17, 4, 11, 10, 4, 13, 12,
      7, 17, 9, 12, 9, 11, 10, 9,
      12, 15, 15, 9, 7, 5, 5, 6,
      13, 6, 13, 5, 7, 6, 8, 3,
      8, 10, 8, 10, 9, 7, 6, 9,
      12, 15, 16, 14, 7, 12, 9, 10,
      10, 12, 14, 13, 13, 11, 7, 8,
      14, 13, 14, 9, 11, 11, 10, 21,
      13, 6, 17, 12, 14, 10, 6, 10,
      10, 13, 11, 10, 14, 11, 10, 12,
      8, 13, 5, 5, 6, 12,
      /* CC */
      16, 9, 17, 15, 9, 8, 8, 5,
      10, 11, 4, 8, 7, 7, 13, 8,
      15, 13, 7, 17, 13, 15, 14, 10,
      8, 12, 10, 14, 11, 5, 9, 6,
      13, 13, 11, 12, 15, 10, 16, 10,
      15, 11, 15, 10, 11, 10, 13, 10,
      11, 10, 9, 11, 10, 5, 10, 10,
      18, 13, 10, 13, 11, 10, 15, 12,
      12, 15, 16, 12, 7, 12, 17, 11,
      10, 9, 8, 4, 11, 13, 5, 11,
      9, 14, 12, 9, 7, 8, 11, 13,
      9, 10, 8, 4, 7, 9,
      /* CD */
      5, 6, 11, 9, 9, 9, 12, 10,
      10, 13, 17, 6, 11, 7, 12, 11,
      10, 12, 9, 12, 11, 7, 5, 10,
      5, 7, 9, 8, 10, 10, 10, 11,
      3, 6, 8, 12, 6, 11, 13, 13,
      13, 14, 9, 7, 4, 17, 8, 6,
      11, 10, 7, 6, 8, 12, 7, 8,
      12, 9, 9, 12, 9, 9, 4, 10,
      9, 5, 15, 9, 12, 8, 10, 3,
      11, 7, 13, 10, 11, 12, 11, 8,
      11, 3, 12, 7, 4, 3, 8, 6,
      8, 8, 11, 7, 6, 9,
      /* CE */
      20, 13, 6, 4, 7, 10, 7, 11,
      11, 4, 14, 11, 7, 11, 8, 6,
      6, 7, 7, 5, 14, 8, 9, 9,
      12, 17, 7, 12, 11, 11, 15, 3,
      14, 12, 10, 4, 9, 7, 7, 14,
      10, 6, 13, 10, 8, 9, 13, 10,
      12, 7, 14, 8, 12, 7, 7, 7,
      9, 4, 6, 9, 9, 4, 7, 11,
      7, 7, 4, 8, 4, 10, 4, 14,
      6, 9, 7, 5, 13, 11, 8, 4,
      5, 10, 9, 8, 14, 8, 6, 11,
      8, 12, 15, 6, 13, 10,
      /* CF */
      12, 10, 7, 11, 15, 3, 11, 14,
      11, 13, 6, 12, 17, 11, 10, 3,
      13, 12, 11, 9, 7, 12, 6, 8,
      15, 9, 7, 17, 14, 13, 9, 8,
      9, 3, 12, 10, 6, 11, 13, 6,
      5, 14, 6, 9, 8, 11, 11, 7,
      9, 8, 13, 9, 9, 8, 13, 7,
      13, 11, 12, 9, 10, 8, 8, 9,
      11, 22, 9, 15, 17, 12, 3, 12,
      10, 8, 13, 9, 8, 9, 9, 15,
      13, 6, 11, 11, 12, 15, 9, 10,
      18, 12, 10, 10, 11, 10,
      /* D0 */
      3, 7, 10, 7, 11, 10, 10, 13,
      8, 13, 15, 15, 6, 9, 13, 6,
      11, 8, 11, 5, 11, 9, 19, 16,
      8, 8, 12, 10, 16, 7, 12, 8,
      7, 13, 7, 4, 9, 11, 9, 13,
      12, 12, 6, 6, 9, 7, 6, 6,
      16, 8, 7, 8, 8, 5, 4, 10,
      6, 7, 12, 14, 6, 9, 10, 6,
      13, 12, 7, 10, 10, 14, 6, 14,
      11, 14, 9, 10, 6, 13, 11, 9,
      6, 7, 10, 9, 12, 12, 11, 11,
      7, 12, 9, 11, 11, 5,
      /* D1 */
      9, 19, 10, 9, 13, 16, 8, 5,
      11, 6, 9, 14, 12, 6, 8, 6,
      6, 6, 10, 6, 5, 5, 9, 6,
      6, 8, 9, 10, 7, 3, 7, 4,
      10, 11, 13, 11, 12, 9, 6, 6,
      11, 9, 11, 10, 11, 10, 7, 9,
      12, 8, 7, 7, 15, 11, 8, 8,
      8, 11, 11, 9, 14, 10, 12, 16,
      6, 9, 12, 10, 9, 12, 10, 11,
      10, 9, 5, 10, 10, 7, 6, 8,
      8, 6, 9, 6, 10, 6, 11, 9,
      10, 14, 16, 13, 7, 14,
      /* D2 */
      13, 6, 13, 11, 12, 9, 9, 10,
      9, 9, 20, 12, 15, 8, 6, 11,
      7, 3, 6, 11, 5, 5, 6, 12,
      8, 11, 1, 12, 7, 12, 11, 8,
      6, 6, 13, 6, 12, 11, 5, 10,
      14, 7, 8, 9, 18, 12, 9, 10,
      3, 1, 7, 4, 4, 7, 8, 7,
      6, 3, 7, 17, 11, 13, 9, 6,
      13, 13, 15, 4, 3, 10, 13, 8,
      5, 10, 7, 6, 17, 11, 8, 9,
      9, 6, 10, 9, 6, 8, 7, 11,
      11, 11, 7, 4, 4, 11,
      /* D3 */
      5, 8, 15, 11, 18, 7, 14, 10,
      11, 11, 9, 14, 7, 17, 9, 15,
      13, 12, 9, 9, 8, 7, 17, 10,
      11, 13, 14, 13, 8, 8, 10, 5,
      11, 9, 5, 9, 6, 11, 7, 4,
      5, 7, 10, 7, 8, 12, 7, 6,
      4, 5, 7, 12, 9, 2, 5, 6,
      11, 3, 8, 13, 13, 13, 14, 7,
      9, 12, 8, 12, 12, 11, 11, 4,
      10, 8, 3, 6, 9, 6, 9, 6,
      5, 11, 6, 8, 6, 12, 12, 10,
      12, 13, 11, 9, 8, 13,
      /* D4 */
      10, 12, 12, 10, 15, 5, 10, 11,
      10, 4, 9, 10, 10, 12, 14, 7,
      7, 10, 13, 13, 12, 7, 8, 14,
      9, 9, 4, 6, 12, 11, 9, 8,
      12, 4, 10, 10, 10, 4, 9, 4,
      9, 4, 7, 15, 11, 10, 13, 5,
      5, 10, 6, 10, 9, 7, 10, 10,
      6, 6, 9, 19, 12, 16, 10, 10,
      12, 14, 17, 12, 19, 8, 6, 16,
      9, 20, 16, 10, 7, 7, 17, 8,
      8, 6, 8, 10, 9, 15, 15, 12,
      16, 4, 12, 12, 5, 5,
      /* D5 */
      11, 8, 9, 9, 14, 8, 5, 9,
      7, 14, 10, 6, 10, 10, 14, 18,
      9, 13, 11, 8, 10, 8, 14, 11,
      10, 22, 9, 5, 9, 10, 12, 11,
      15, 11, 14, 14, 7, 12, 10, 7,
      3, 7, 8, 5, 8, 16, 13, 8,
      9, 7, 8, 9, 13, 13, 6, 14,
      5, 14, 7, 10, 12, 16, 8, 13,
      14, 7, 10, 9, 13, 10, 13, 10,
      16, 6, 7, 8, 8, 10, 7, 15,
      10, 15, 6, 13, 9, 11, 8, 9,
      6, 8, 16, 9, 5, 9,
      /* D6 */
      9, 10, 8, 7, 6, 8, 4, 7,
      14, 8, 8, 10, 5, 3, 8, 11,
      8, 12, 12, 6, 10, 8, 7, 9,
      4, 11, 5, 6, 7, 7, 10, 11,
      6, 10, 13, 8, 9, 8, 12, 10,
      13, 8, 8, 11, 12, 8, 11, 4,
      9, 8, 9, 10, 8, 9, 8, 9,
      6, 6, 6, 8, 6, 9, 7, 12,
      9, 7, 8, 8, 10, 8, 9, 17,
      10, 10, 12, 6, 11, 10, 8, 10,
      6, 10, 12, 8, 17, 15, 5, 11,
      9, 7, 11, 8, 12, 12,
      /* D7 */
      7, 8, 9, 8, 7, 4, 9, 4,
      9, 8, 15, 14, 15, 10, 6, 12,
      6, 15, 6, 7, 12, 13, 9, 14,
      7, 11, 10, 10, 10, 8, 8, 10,
      12, 8, 10, 11, 11, 7, 9, 9,
      9, 10, 9, 12, 11, 7, 12, 5,
      9, 13, 3, 6, 11, 6, 18, 12,
      15, 8, 11, 9, 7, 7, 7, 9,
      12, 10, 7, 8, 11, 9, 7, 7,
      8, 10, 20, 16, 15, 12, 13, 12,
      15, 9, 5, 7, 9, 11, 7, 7,
      10, 0, 0, 0, 0, 0,
      /* D8 */
      3, 3, 3, 4, 4, 4, 5, 6,
      6, 10, 10, 16, 1, 8, 1, 2,
      3, 4, 4, 5, 5, 6, 9, 11,
      14, 14, 19, 1, 8, 14, 2, 6,
      4, 7, 7, 11, 14, 4, 6, 10,
      11, 12, 14, 15, 16, 2, 5, 8,
      11, 11, 15, 8, 7, 2, 4, 6,
      7, 8, 8, 8, 9, 10, 10, 10,
      13, 13, 14, 14, 15, 16, 2, 8,
      2, 4, 4, 4, 5, 5, 5, 5,
      6, 6, 6, 6, 6, 6, 6, 6,
      6, 7, 7, 7, 7, 7,
      /* D9 */
      7, 7, 7, 7, 8, 8, 8, 8,
      8, 8, 8, 8, 8, 8, 8, 8,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 10, 10, 10, 11, 11,
      11, 11, 11, 11, 11, 12, 12, 12,
      13, 14, 14, 14, 14, 14, 14, 15,
      15, 5, 6, 7, 7, 9, 17, 6,
      8, 4, 12, 16, 17, 18, 21, 2,
      9, 9, 11, 6, 6, 7, 2, 8,
      10, 10, 11, 12, 12, 12, 13, 16,
      19, 19, 2, 6, 8, 8,
      /* DA */
      10, 2, 10, 10, 2, 5, 5, 5,
      6, 6, 6, 7, 7, 7, 7, 7,
      7, 8, 8, 8, 8, 8, 8, 8,
      8, 8, 8, 8, 9, 9, 9, 9,
      10, 10, 10, 10, 10, 10, 10, 11,
      11, 11, 11, 11, 11, 11, 11, 11,
      11, 11, 12, 12, 12, 12, 12, 13,
      13, 14, 14, 14, 15, 15, 19, 2,
      8, 2, 5, 5, 6, 6, 7, 7,
      7, 7, 8, 9, 9, 10, 10, 10,
      11, 11, 11, 16, 5, 5, 5, 5,
      6, 6, 7, 7, 7, 7,
      /* DB */
      7, 7, 8, 8, 8, 8, 8, 8,
      8, 9, 9, 9, 9, 9, 10, 10,
      11, 11, 13, 13, 13, 14, 14, 16,
      19, 17, 5, 7, 5, 7, 7, 8,
      10, 10, 11, 15, 9, 17, 20, 2,
      2, 6, 10, 2, 5, 10, 12, 7,
      9, 9, 14, 16, 16, 17, 6, 6,
      6, 6, 6, 6, 6, 7, 7, 7,
      8, 8, 8, 8, 8, 8, 8, 8,
      8, 8, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 10, 10, 10, 10, 10,
      10, 11, 11, 11, 11, 11,
      /* DC */
      11, 11, 11, 11, 11, 12, 12, 12,
      12, 13, 13, 14, 14, 14, 15, 20,
      21, 22, 3, 5, 5, 6, 6, 6,
      6, 6, 6, 6, 7, 7, 7, 7,
      7, 7, 7, 7, 7, 7, 7, 7,
      7, 7, 7, 7, 7, 7, 7, 7,
      7, 7, 7, 8, 8, 8, 8, 8,
      8, 8, 8, 8, 8, 8, 8, 8,
      8, 8, 8, 8, 8, 8, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9,
      /* DD */
      9, 9, 9, 9, 9, 9, 9, 10,
      10, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 11, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 13,
      13, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 13, 13, 13, 13, 13, 14,
      14, 14, 14, 14, 14, 14,
      /* DE */
      14, 14, 14, 14, 15, 15, 15, 15,
      15, 15, 15, 15, 15, 16, 16, 16,
      16, 16, 16, 16, 16, 16, 17, 17,
      17, 17, 17, 18, 19, 19, 19, 20,
      20, 22, 3, 9, 6, 7, 9, 9,
      10, 10, 11, 3, 5, 5, 12, 3,
      6, 7, 8, 8, 8, 8, 9, 9,
      9, 10, 10, 10, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 11, 11, 11,
      12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 13, 13, 13, 13, 13, 13,
      13, 13, 14, 14, 14, 14,
      /* DF */
      14, 15, 15, 15, 15, 16, 16, 16,
      17, 17, 19, 23, 25, 3, 7, 8,
      12, 5, 5, 5, 5, 5, 5, 6,
      6, 6, 7, 7, 7, 7, 7, 7,
      7, 7, 7, 7, 7, 8, 8, 8,
      8, 8, 8, 8, 8, 8, 8, 8,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 9,
      10, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 11, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 11,
      /* E0 */
      11, 11, 11, 11, 11, 11, 11, 11,
      12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12,
      12, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 13, 13, 13, 13, 14, 14,
      14, 14, 14, 14, 14, 14, 14, 15,
      15, 15, 15, 15, 15, 15, 15, 15,
      15, 15, 16, 16, 16, 16, 16, 16,
      17, 17, 19, 25, 3, 6, 6, 7,
      7, 8, 9, 10, 11, 11, 16, 7,
      8, 8, 8, 10, 11, 11,
      /* E1 */
      11, 12, 14, 14, 15, 15, 6, 6,
      7, 7, 7, 7, 7, 7, 7, 7,
      7, 8, 8, 8, 8, 8, 8, 8,
      8, 8, 8, 9, 9, 9, 9, 10,
      10, 11, 11, 11, 11, 11, 11, 11,
      12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 13, 13, 13, 14, 15, 15,
      17, 17, 19, 3, 7, 8, 9, 9,
      9, 10, 11, 11, 12, 13, 15, 16,
      24, 3, 3, 5, 6, 6, 6, 7,
      7, 8, 8, 8, 9, 9, 9, 9,
      10, 10, 10, 10, 10, 10,
      /* E2 */
      10, 11, 11, 11, 11, 11, 11, 11,
      12, 12, 12, 12, 12, 12, 14, 14,
      15, 15, 16, 17, 20, 6, 14, 12,
      14, 3, 3, 6, 7, 7, 7, 7,
      7, 8, 9, 10, 10, 11, 12, 12,
      13, 13, 14, 15, 15, 25, 5, 7,
      7, 8, 9, 9, 11, 11, 11, 11,
      12, 13, 14, 15, 16, 16, 17, 3,
      5, 6, 6, 7, 7, 7, 7, 7,
      7, 7, 7, 7, 7, 7, 8, 8,
      8, 8, 8, 8, 8, 8, 8, 8,
      8, 9, 9, 9, 9, 9,
      /* E3 */
      9, 9, 10, 10, 10, 10, 10, 10,
      10, 10, 11, 11, 11, 11, 11, 11,
      11, 11, 12, 12, 12, 12, 12, 12,
      12, 13, 13, 14, 15, 15, 15, 16,
      16, 18, 8, 17, 4, 6, 7, 7,
      7, 7, 9, 9, 10, 10, 10, 11,
      11, 11, 11, 11, 11, 12, 12, 13,
      13, 13, 14, 3, 4, 8, 3, 6,
      6, 6, 7, 7, 7, 7, 7, 7,
      7, 7, 7, 7, 7, 7, 8, 8,
      8, 8, 8, 8, 8, 8, 8, 8,
      8, 8, 8, 8, 8, 8,
      /* E4 */
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 10, 10, 11, 11, 11,
      11, 11, 11, 11, 11, 11, 11, 11,
      11, 11, 11, 11, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12,
      13, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 13, 13, 13, 13, 13, 13,
      13, 14, 14, 14, 14, 14, 14, 14,
      14, 14, 14, 14, 14, 14, 14, 15,
      15, 15, 15, 15, 15, 16,
      /* E5 */
      16, 16, 16, 16, 16, 17, 17, 17,
      17, 17, 19, 19, 19, 20, 20, 21,
      24, 3, 5, 8, 8, 9, 10, 12,
      13, 14, 14, 15, 16, 16, 17, 17,
      3, 7, 7, 8, 8, 8, 8, 8,
      8, 8, 9, 9, 10, 10, 10, 10,
      10, 10, 11, 11, 11, 11, 12, 12,
      12, 12, 13, 13, 13, 13, 15, 15,
      16, 16, 17, 17, 18, 3, 11, 9,
      12, 5, 9, 10, 10, 12, 14, 15,
      21, 8, 8, 9, 11, 12, 22, 3,
      6, 6, 7, 7, 7, 7,
      /* E6 */
      7, 7, 7, 7, 7, 7, 8, 8,
      8, 8, 9, 9, 9, 9, 9, 9,
      9, 10, 10, 10, 10, 10, 10, 10,
      10, 11, 11, 11, 11, 11, 11, 11,
      12, 12, 12, 12, 13, 13, 13, 13,
      13, 13, 14, 14, 14, 14, 14, 14,
      14, 15, 16, 16, 17, 17, 20, 5,
      9, 7, 8, 12, 3, 3, 8, 8,
      8, 8, 8, 8, 8, 8, 9, 9,
      9, 10, 11, 11, 11, 11, 12, 12,
      13, 13, 13, 14, 14, 15, 19, 20,
      3, 6, 6, 6, 6, 6,
      /* E7 */
      7, 7, 7, 8, 8, 8, 8, 8,
      8, 8, 9, 9, 9, 10, 10, 10,
      11, 11, 11, 11, 11, 11, 11, 11,
      11, 11, 11, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 13, 13, 13,
      13, 13, 13, 13, 13, 14, 14, 14,
      14, 14, 15, 15, 15, 16, 16, 16,
      16, 19, 3, 15, 3, 8, 10, 6,
      6, 8, 8, 8, 9, 9, 9, 9,
      9, 9, 9, 9, 10, 10, 10, 10,
      10, 10, 10, 10, 10, 11, 12, 12,
      12, 12, 12, 12, 12, 12,
      /* E8 */
      12, 12, 13, 13, 13, 13, 13, 14,
      14, 15, 15, 15, 15, 15, 15, 15,
      16, 17, 17, 17, 18, 20, 20, 13,
      13, 14, 7, 7, 7, 7, 7, 8,
      8, 8, 8, 8, 8, 8, 8, 8,
      8, 8, 8, 8, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 10,
      10, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 11, 11, 11, 11, 11, 11,
      11, 12, 12, 12, 12, 12,
      /* E9 */
      12, 12, 12, 12, 12, 12, 12, 13,
      13, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 14, 14, 14, 14, 14, 14,
      14, 14, 14, 14, 14, 14, 14, 15,
      15, 15, 15, 15, 15, 15, 15, 16,
      16, 16, 16, 16, 16, 16, 16, 16,
      16, 16, 17, 17, 17, 17, 18, 13,
      14, 8, 9, 9, 9, 11, 11, 11,
      12, 12, 14, 16, 7, 8, 9, 9,
      9, 9, 9, 9, 9, 9, 9, 10,
      10, 10, 10, 11, 12, 12,
      /* EA */
      12, 12, 13, 15, 16, 10, 5, 8,
      11, 12, 12, 13, 13, 13, 14, 14,
      8, 9, 12, 16, 16, 17, 4, 6,
      6, 7, 8, 8, 8, 8, 8, 8,
      8, 9, 9, 9, 9, 9, 9, 10,
      10, 10, 10, 10, 10, 11, 11, 12,
      13, 13, 14, 14, 16, 18, 18, 20,
      21, 9, 9, 9, 9, 10, 10, 10,
      10, 11, 11, 11, 12, 12, 14, 9,
      10, 11, 12, 13, 14, 15, 15, 9,
      13, 6, 8, 9, 11, 11, 12, 12,
      12, 13, 14, 10, 11, 12,
      /* EB */
      14, 17, 10, 10, 12, 12, 12, 13,
      15, 16, 16, 22, 5, 6, 7, 7,
      9, 10, 10, 11, 13, 4, 11, 13,
      12, 13, 15, 9, 15, 6, 7, 7,
      7, 8, 8, 8, 8, 8, 8, 8,
      8, 9, 9, 9, 9, 9, 9, 9,
      9, 9, 9, 9, 9, 9, 10, 10,
      10, 10, 10, 10, 10, 10, 10, 11,
      11, 11, 11, 11, 11, 12, 12, 12,
      12, 12, 12, 12, 13, 13, 13, 13,
      13, 13, 13, 13, 14, 14, 14, 15,
      15, 16, 17, 17, 17, 17,
      /* EC */
      17, 16, 7, 11, 12, 13, 13, 16,
      9, 9, 12, 13, 16, 16, 4, 13,
      13, 17, 12, 15, 16, 8, 10, 10,
      10, 11, 11, 13, 14, 7, 8, 8,
      8, 9, 9, 9, 9, 9, 10, 10,
      11, 11, 11, 12, 12, 13, 13, 13,
      13, 13, 13, 13, 13, 14, 15, 15,
      15, 15, 16, 16, 16, 18, 21, 30,
      4, 11, 13, 16, 8, 8, 9, 11,
      12, 4, 7, 8, 8, 9, 9, 9,
      9, 9, 9, 9, 10, 10, 12, 12,
      13, 14, 16, 21, 7, 7,
      /* ED */
      9, 10, 10, 10, 10, 10, 10, 11,
      13, 13, 14, 16, 16, 17, 17, 24,
      4, 6, 8, 9, 12, 7, 8, 8,
      9, 9, 9, 9, 9, 9, 9, 10,
      10, 10, 10, 10, 10, 10, 10, 10,
      10, 11, 11, 11, 11, 11, 11, 11,
      11, 12, 13, 13, 13, 13, 13, 14,
      14, 14, 14, 14, 15, 15, 15, 16,
      16, 17, 17, 18, 19, 18, 21, 11,
      12, 17, 19, 8, 9, 9, 9, 9,
      9, 10, 10, 10, 11, 11, 11, 11,
      12, 12, 12, 12, 13, 13,
      /* EE */
      13, 13, 14, 14, 14, 14, 15, 15,
      16, 16, 16, 17, 18, 7, 8, 9,
      9, 9, 10, 12, 13, 17, 9, 10,
      10, 12, 13, 14, 14, 16, 17, 17,
      10, 16, 23, 5, 6, 6, 7, 7,
      7, 8, 8, 8, 8, 8, 8, 9,
      9, 9, 9, 9, 9, 9, 9, 9,
      9, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 10, 10, 10, 10, 10,
      10, 10, 10, 10, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 11,
      /* EF */
      11, 11, 11, 11, 11, 11, 11, 11,
      12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12,
      12, 13, 13, 13, 13, 13, 13, 13,
      13, 13, 13, 13, 13, 14, 14, 14,
      14, 14, 14, 14, 14, 14, 14, 14,
      14, 15, 15, 15, 15, 15, 15, 15,
      15, 16, 16, 16, 16, 16, 16, 16,
      16, 17, 17, 17, 17, 17, 17, 17,
      17, 17, 17, 18, 18, 18, 19, 20,
      14, 9, 12, 13, 9, 9, 10, 10,
      11, 12, 12, 12, 13, 13,
      /* F0 */
      15, 15, 16, 17, 18, 22, 9, 11,
      12, 13, 17, 10, 11, 7, 7, 8,
      9, 9, 10, 10, 10, 10, 10, 10,
      11, 11, 11, 11, 11, 12, 12, 12,
      12, 12, 12, 13, 13, 13, 13, 13,
      14, 14, 14, 14, 14, 15, 15, 16,
      16, 16, 17, 17, 17, 17, 18, 18,
      22, 5, 7, 7, 8, 8, 9, 9,
      10, 10, 10, 10, 10, 10, 10, 10,
      11, 11, 12, 12, 12, 12, 12, 12,
      13, 13, 13, 13, 13, 13, 13, 14,
      14, 14, 14, 14, 14, 14,
      /* F1 */
      15, 15, 15, 15, 16, 16, 16, 16,
      16, 16, 16, 16, 17, 18, 18, 18,
      18, 21, 23, 11, 12, 8, 8, 9,
      9, 10, 11, 13, 13, 14, 14, 14,
      15, 5, 8, 9, 9, 9, 9, 10,
      11, 11, 11, 11, 12, 12, 12, 12,
      13, 13, 13, 13, 13, 13, 14, 14,
      14, 14, 14, 15, 15, 16, 17, 19,
      24, 5, 9, 11, 12, 9, 6, 9,
      10, 12, 12, 13, 14, 15, 15, 16,
      16, 22, 12, 8, 11, 11, 11, 12,
      15, 16, 12, 9, 10, 10,
      /* F2 */
      12, 12, 12, 12, 13, 15, 15, 16,
      16, 16, 18, 20, 21, 6, 10, 7,
      8, 9, 9, 9, 9, 10, 10, 10,
      10, 10, 10, 10, 10, 10, 10, 11,
      11, 11, 11, 11, 11, 11, 11, 11,
      11, 11, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 13, 13,
      13, 13, 13, 13, 13, 13, 14, 14,
      14, 14, 14, 14, 14, 14, 14, 14,
      14, 14, 14, 14, 15, 15, 15, 15,
      15, 15, 15, 15, 15, 15, 15, 15,
      15, 15, 16, 16, 16, 16,
      /* F3 */
      16, 16, 16, 16, 16, 16, 17, 17,
      17, 17, 17, 17, 17, 17, 17, 17,
      17, 18, 18, 18, 18, 19, 19, 19,
      19, 20, 21, 24, 26, 6, 14, 17,
      17, 10, 8, 9, 9, 9, 10, 10,
      10, 10, 10, 11, 11, 11, 11, 11,
      11, 11, 11, 11, 11, 11, 11, 12,
      12, 12, 12, 12, 12, 13, 13, 13,
      13, 13, 13, 14, 14, 14, 14, 14,
      14, 14, 14, 14, 14, 14, 14, 15,
      15, 15, 15, 16, 16, 16, 16, 16,
      17, 17, 17, 17, 17, 17,
      /* F4 */
      18, 18, 18, 19, 19, 19, 8, 9,
      11, 12, 10, 10, 9, 9, 9, 10,
      10, 10, 10, 11, 11, 11, 11, 12,
      13, 13, 14, 15, 17, 18, 19, 10,
      10, 11, 13, 13, 19, 11, 11, 13,
      15, 15, 16, 9, 10, 10, 11, 11,
      12, 12, 13, 14, 14, 14, 15, 15,
      15, 15, 15, 16, 18, 6, 15, 9,
      11, 12, 14, 14, 15, 15, 16, 17,
      6, 12, 14, 14, 17, 25, 11, 19,
      9, 12, 13, 13, 23, 11, 15, 10,
      11, 9, 10, 10, 10, 12,
      /* F5 */
      12, 12, 13, 13, 13, 14, 14, 14,
      14, 14, 15, 15, 16, 16, 16, 17,
      17, 18, 19, 19, 19, 20, 20, 21,
      7, 16, 10, 13, 14, 18, 18, 10,
      10, 11, 11, 11, 12, 12, 12, 12,
      12, 12, 12, 12, 13, 13, 13, 13,
      13, 13, 13, 14, 14, 15, 15, 15,
      15, 15, 15, 15, 15, 16, 16, 16,
      16, 16, 16, 16, 16, 17, 17, 17,
      19, 19, 19, 19, 19, 20, 21, 22,
      22, 23, 24, 7, 12, 13, 13, 17,
      17, 11, 11, 12, 12, 13,
      /* F6 */
      13, 14, 15, 13, 18, 12, 11, 12,
      12, 14, 14, 16, 16, 16, 19, 19,
      20, 22, 10, 13, 13, 13, 14, 14,
      15, 15, 17, 8, 12, 20, 8, 10,
      10, 13, 14, 18, 18, 14, 14, 15,
      16, 17, 18, 18, 21, 24, 12, 12,
      13, 13, 13, 13, 13, 13, 13, 13,
      14, 14, 14, 14, 14, 14, 14, 14,
      15, 15, 15, 15, 15, 15, 15, 15,
      15, 15, 16, 16, 16, 16, 16, 16,
      16, 16, 16, 16, 16, 16, 17, 17,
      17, 17, 17, 17, 17, 17,
      /* F7 */
      18, 18, 18, 18, 18, 19, 19, 19,
      19, 19, 19, 20, 20, 20, 21, 14,
      14, 15, 15, 16, 18, 18, 18, 19,
      19, 13, 13, 14, 14, 14, 15, 15,
      17, 17, 18, 18, 19, 19, 22, 14,
      14, 15, 16, 16, 17, 19, 12, 15,
      18, 22, 22, 10, 13, 14, 15, 15,
      16, 16, 16, 18, 19, 20, 23, 25,
      14, 15, 17, 13, 16, 16, 17, 19,
      19, 21, 23, 17, 17, 17, 18, 18,
      19, 20, 20, 20, 20, 21, 17, 18,
      20, 23, 23, 16, 17, 23,
      /* F8 */
  };
}


 

 

目录
相关文章
|
存储 SQL NoSQL
ClickHouse和Doris超大数据集存储
ClickHouse和Doris超大数据集存储
1139 0
|
存储 监控 OLAP
【ClickHouse 技术系列】- 在 ClickHouse 物化视图中使用 Join
本文翻译自 Altinity 针对 ClickHouse 的系列技术文章。面向联机分析处理(OLAP)的开源分析引擎 ClickHouse,因其优良的查询性能,PB级的数据规模,简单的架构,被国内外公司广泛采用。本系列技术文章,将详细展开介绍 ClickHouse。
【ClickHouse 技术系列】- 在 ClickHouse 物化视图中使用 Join
|
弹性计算 人工智能 网络协议
揭秘!CIPU最新秘密武器–弹性RDMA的技术解析与实践
弹性RDMA(Elastic Remote Direct Memory Access,简称eRDMA),是阿里云自研的云上弹性RDMA网络,底层链路复用VPC网络,采用全栈自研的拥塞控制CC(Congestion Control )算法,兼具传统RDMA网络高吞吐、低延迟特性,同时支持秒级的大规模RDMA组网。基于弹性RDMA,开发者可以将HPC应用软件部署在云上,获取成本更低、弹性更好的高性能应用集群;也可以将VPC网络替换成弹性RDMA网络,加速应用性能。
揭秘!CIPU最新秘密武器–弹性RDMA的技术解析与实践
|
弹性计算 负载均衡 应用服务中间件
Nginx重试机制,浏览器重复请求两次多次
问题找到了,原因是Nginx配置文件中,超时时间太短了:proxy_connect_timeout 20;;在Nginx的默认配置是:在客户端请求服务器超时的情况下,Nginx会自动转发该请求到另外一台服务器上,这是Nginx的一种容错机制,所以Nginx的访问日志中会出现同一条请求而两台服务器都执行了一遍的情况,这样以来,程序如果没有做幂等性操作的话数据库会出现两条记录。
1409 0
|
人工智能 自然语言处理 Java
一种拼音分词器的JAVA实现
搜索中的分词器有很多种,包括中文、英文,一般的网站都会有站内搜索功能,也就是对用户输入的内容进行处理,本文对中文的全拼实现了一 个分词器,原理很简单,就是模式匹配。
655 0
|
6天前
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
2024年11月29日,阿里云在上海举办金融量化策略回测Workshop,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。活动特别设计了动手实践环节,帮助参会者亲身体验阿里云产品功能,涵盖EHPC量化回测和Argo Workflows量化回测两大主题,旨在提升量化投研效率与安全性。
云上金融量化策略回测方案与最佳实践
|
8天前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
8104 19
|
12天前
|
Cloud Native Apache 流计算
资料合集|Flink Forward Asia 2024 上海站
Apache Flink 年度技术盛会聚焦“回顾过去,展望未来”,涵盖流式湖仓、流批一体、Data+AI 等八大核心议题,近百家厂商参与,深入探讨前沿技术发展。小松鼠为大家整理了 FFA 2024 演讲 PPT ,可在线阅读和下载。
4387 10
资料合集|Flink Forward Asia 2024 上海站
|
20天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
12天前
|
自然语言处理 数据可视化 API
Qwen系列模型+GraphRAG/LightRAG/Kotaemon从0开始构建中医方剂大模型知识图谱问答
本文详细记录了作者在短时间内尝试构建中医药知识图谱的过程,涵盖了GraphRAG、LightRAG和Kotaemon三种图RAG架构的对比与应用。通过实际操作,作者不仅展示了如何利用这些工具构建知识图谱,还指出了每种工具的优势和局限性。尽管初步构建的知识图谱在数据处理、实体识别和关系抽取等方面存在不足,但为后续的优化和改进提供了宝贵的经验和方向。此外,文章强调了知识图谱构建不仅仅是技术问题,还需要深入整合领域知识和满足用户需求,体现了跨学科合作的重要性。