Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 4 of 4

Thread: Possible to change duty of an WAVEFORM_ARBITRARY ?

  1. #1
    Junior Member
    Join Date
    Nov 2018
    Posts
    6

    Possible to change duty of an WAVEFORM_ARBITRARY ?

    Hi!
    I have moved from using WAVEFORM_PULSE to using WAVEFORM_ARBITRARY
    array to avoid problems with overtones exceeding 22 khz, and it works really nice. Now tones are clean and nice.

    But now i can't change the duty cycle of the sound, which is boring :/
    I did look into the synth_waveform.cpp file, but's it's kinda hard to understand it.
    Does someone have a clue or an idea how to do it?


    If someone wanna try it out, here is the massive int16_t [40][256] array with data:
    Code:
    const int16_t squareTable[40][256] = {
    {0, 23299, 23180, 23116, 23218, 23149, 23160, 23195, 23146, 23177, 23179, 23152, 23183, 23167, 23160, 23183, 23160, 23169, 23178, 23159, 23175, 23172, 23161, 23178, 23166, 23166, 23177, 23163, 23171, 23174, 23162, 23174, 23169, 23164, 23176, 23165, 23168, 23175, 23163, 23172, 23172, 23164, 23174, 23168, 23166, 23175, 23165, 23170, 23173, 23164, 23172, 23170, 23165, 23174, 23167, 23168, 23174, 23165, 23171, 23172, 23165, 23173, 23169, 23166, 23174, 23166, 23169, 23173, 23165, 23172, 23171, 23165, 23174, 23168, 23167, 23174, 23165, 23170, 23173, 23164, 23173, 23170, 23165, 23175, 23166, 23168, 23174, 23164, 23171, 23172, 23164, 23175, 23168, 23165, 23176, 23164, 23169, 23174, 23162, 23174, 23171, 23163, 23177, 23166, 23166, 23178, 23161, 23172, 23175, 23159, 23178, 23169, 23160, 23183, 23160, 23167, 23183, 23152, 23179, 23177, 23146, 23195, 23160, 23149, 23218, 23116, 23180, 23299, -3, -23299, -23180, -23116, -23218, -23149, -23160, -23195, -23146, -23177, -23179, -23152, -23183, -23167, -23160, -23183, -23160, -23169, -23178, -23159, -23175, -23172, -23161, -23178, -23166, -23166, -23177, -23163, -23171, -23174, -23162, -23174, -23169, -23164, -23176, -23165, -23168, -23175, -23163, -23172, -23171, -23164, -23174, -23168, -23166, -23175, -23165, -23170, -23173, -23164, -23173, -23170, -23165, -23174, -23167, -23168, -23174, -23165, -23171, -23172, -23165, -23173, -23169, -23166, -23174, -23166, -23169, -23173, -23164, -23172, -23171, -23165, -23174, -23168, -23167, -23174, -23165, -23170, -23173, -23164, -23173, -23170, -23165, -23175, -23166, -23168, -23174, -23164, -23172, -23172, -23163, -23175, -23168, -23165, -23176, -23164, -23169, -23174, -23162, -23174, -23171, -23163, -23177, -23166, -23166, -23178, -23161, -23172, -23175, -23159, -23178, -23169, -23160, -23183, -23160, -23167, -23183, -23152, -23179, -23177, -23146, -23195, -23160, -23149, -23217, -23116, -23180, -23299},
    {0, 23007, 23170, 23225, 23228, 23202, 23169, 23145, 23140, 23151, 23169, 23185, 23189, 23182, 23169, 23158, 23154, 23159, 23169, 23178, 23181, 23177, 23169, 23162, 23159, 23162, 23169, 23176, 23178, 23175, 23169, 23163, 23161, 23164, 23169, 23175, 23177, 23174, 23169, 23164, 23162, 23164, 23169, 23174, 23176, 23174, 23169, 23165, 23163, 23165, 23169, 23174, 23175, 23173, 23169, 23165, 23163, 23165, 23169, 23173, 23175, 23173, 23169, 23165, 23164, 23165, 23169, 23173, 23175, 23173, 23169, 23165, 23163, 23165, 23169, 23173, 23175, 23174, 23169, 23165, 23163, 23165, 23169, 23174, 23176, 23174, 23169, 23164, 23162, 23164, 23169, 23174, 23177, 23175, 23169, 23164, 23161, 23163, 23169, 23176, 23178, 23176, 23169, 23162, 23159, 23162, 23169, 23178, 23181, 23178, 23169, 23159, 23154, 23158, 23169, 23182, 23189, 23185, 23169, 23151, 23140, 23145, 23169, 23202, 23228, 23225, 23170, 23007, -2, -23007, -23170, -23225, -23228, -23202, -23169, -23145, -23140, -23151, -23169, -23185, -23189, -23182, -23169, -23158, -23154, -23159, -23169, -23178, -23181, -23178, -23169, -23162, -23159, -23162, -23169, -23176, -23178, -23175, -23169, -23163, -23161, -23164, -23169, -23175, -23177, -23174, -23169, -23164, -23162, -23164, -23169, -23174, -23176, -23174, -23169, -23165, -23163, -23165, -23169, -23174, -23175, -23173, -23169, -23165, -23163, -23165, -23169, -23173, -23175, -23173, -23169, -23165, -23164, -23165, -23169, -23173, -23175, -23173, -23169, -23165, -23163, -23165, -23169, -23174, -23175, -23174, -23169, -23165, -23163, -23165, -23169, -23174, -23176, -23174, -23169, -23164, -23162, -23164, -23169, -23174, -23177, -23175, -23169, -23164, -23161, -23163, -23169, -23176, -23178, -23176, -23169, -23162, -23159, -23162, -23169, -23177, -23181, -23178, -23169, -23159, -23154, -23158, -23169, -23182, -23189, -23185, -23169, -23151, -23140, -23145, -23169, -23202, -23228, -23225, -23170, -23007},
    {0, 23370, 23168, 23104, 23239, 23130, 23169, 23197, 23134, 23191, 23169, 23151, 23193, 23154, 23169, 23183, 23151, 23181, 23169, 23159, 23184, 23159, 23169, 23178, 23157, 23178, 23169, 23161, 23180, 23162, 23169, 23176, 23160, 23176, 23169, 23163, 23178, 23163, 23169, 23175, 23161, 23175, 23169, 23164, 23177, 23164, 23169, 23175, 23162, 23174, 23169, 23164, 23176, 23164, 23169, 23174, 23162, 23174, 23169, 23164, 23176, 23164, 23169, 23174, 23162, 23174, 23169, 23164, 23176, 23164, 23169, 23174, 23162, 23174, 23169, 23164, 23176, 23164, 23169, 23174, 23162, 23175, 23169, 23164, 23177, 23164, 23169, 23175, 23161, 23175, 23169, 23163, 23178, 23163, 23169, 23176, 23160, 23176, 23169, 23162, 23180, 23161, 23169, 23178, 23157, 23178, 23169, 23159, 23184, 23159, 23169, 23181, 23151, 23183, 23169, 23154, 23193, 23151, 23169, 23191, 23134, 23197, 23169, 23130, 23239, 23104, 23168, 23370, -2, -23370, -23168, -23104, -23239, -23130, -23169, -23197, -23134, -23191, -23169, -23151, -23193, -23154, -23169, -23183, -23151, -23181, -23169, -23159, -23184, -23159, -23169, -23178, -23157, -23178, -23169, -23161, -23180, -23162, -23169, -23176, -23160, -23176, -23169, -23163, -23178, -23163, -23169, -23175, -23161, -23175, -23169, -23164, -23177, -23164, -23169, -23175, -23162, -23174, -23169, -23164, -23176, -23164, -23169, -23174, -23162, -23174, -23169, -23164, -23176, -23164, -23169, -23174, -23162, -23174, -23169, -23164, -23176, -23164, -23169, -23174, -23162, -23174, -23169, -23164, -23176, -23164, -23169, -23174, -23162, -23175, -23169, -23164, -23177, -23164, -23169, -23175, -23161, -23175, -23169, -23163, -23178, -23163, -23169, -23176, -23160, -23176, -23169, -23162, -23180, -23161, -23169, -23178, -23157, -23178, -23169, -23159, -23184, -23159, -23169, -23181, -23151, -23183, -23169, -23154, -23193, -23151, -23169, -23191, -23134, -23197, -23169, -23130, -23239, -23104, -23168, -23370},
    {0, 23470, 23062, 23197, 23185, 23130, 23218, 23122, 23208, 23144, 23179, 23174, 23154, 23191, 23145, 23191, 23154, 23176, 23171, 23160, 23184, 23153, 23184, 23158, 23175, 23170, 23163, 23180, 23157, 23181, 23160, 23174, 23169, 23164, 23178, 23159, 23180, 23161, 23174, 23169, 23166, 23176, 23160, 23178, 23162, 23174, 23168, 23166, 23175, 23161, 23178, 23162, 23174, 23168, 23167, 23175, 23162, 23177, 23162, 23174, 23168, 23167, 23174, 23162, 23177, 23162, 23174, 23167, 23168, 23174, 23162, 23178, 23162, 23175, 23167, 23168, 23174, 23162, 23178, 23161, 23175, 23166, 23168, 23174, 23162, 23179, 23160, 23176, 23166, 23169, 23174, 23161, 23180, 23159, 23178, 23164, 23169, 23174, 23160, 23181, 23157, 23180, 23163, 23170, 23175, 23158, 23184, 23153, 23184, 23160, 23171, 23176, 23154, 23191, 23145, 23191, 23154, 23174, 23179, 23144, 23208, 23122, 23218, 23130, 23185, 23197, 23062, 23470, -2, -23470, -23062, -23197, -23185, -23130, -23218, -23122, -23208, -23144, -23179, -23174, -23154, -23191, -23145, -23191, -23154, -23176, -23171, -23160, -23184, -23153, -23184, -23158, -23175, -23170, -23163, -23180, -23157, -23181, -23160, -23174, -23169, -23164, -23178, -23159, -23180, -23161, -23174, -23169, -23166, -23176, -23160, -23178, -23162, -23174, -23168, -23166, -23175, -23161, -23178, -23162, -23174, -23168, -23167, -23175, -23162, -23177, -23162, -23174, -23168, -23167, -23174, -23162, -23177, -23162, -23174, -23167, -23168, -23174, -23162, -23178, -23162, -23175, -23167, -23168, -23174, -23162, -23178, -23161, -23175, -23166, -23168, -23174, -23162, -23179, -23160, -23176, -23166, -23169, -23174, -23161, -23180, -23159, -23178, -23164, -23169, -23174, -23160, -23181, -23157, -23180, -23163, -23170, -23175, -23158, -23184, -23153, -23184, -23160, -23171, -23176, -23154, -23191, -23145, -23191, -23154, -23174, -23179, -23144, -23208, -23122, -23218, -23130, -23185, -23197, -23062, -23470},
    {0, 23331, 23306, 23047, 23170, 23242, 23122, 23148, 23219, 23152, 23141, 23203, 23169, 23141, 23190, 23179, 23144, 23178, 23185, 23149, 23169, 23187, 23156, 23162, 23187, 23163, 23158, 23184, 23169, 23156, 23179, 23175, 23156, 23174, 23178, 23158, 23169, 23181, 23161, 23165, 23181, 23165, 23161, 23180, 23169, 23159, 23177, 23173, 23159, 23173, 23176, 23160, 23169, 23179, 23162, 23165, 23179, 23166, 23162, 23178, 23169, 23160, 23176, 23173, 23160, 23173, 23176, 23160, 23169, 23178, 23162, 23166, 23179, 23165, 23162, 23178, 23169, 23160, 23177, 23173, 23159, 23173, 23177, 23159, 23169, 23180, 23161, 23165, 23181, 23165, 23161, 23181, 23169, 23157, 23178, 23174, 23156, 23175, 23179, 23156, 23169, 23184, 23158, 23163, 23187, 23162, 23156, 23187, 23169, 23149, 23185, 23178, 23144, 23179, 23190, 23141, 23169, 23203, 23141, 23152, 23219, 23148, 23122, 23242, 23170, 23047, 23306, 23331, -1, -23331, -23306, -23047, -23170, -23242, -23122, -23148, -23219, -23152, -23141, -23203, -23169, -23141, -23190, -23179, -23144, -23178, -23185, -23149, -23169, -23187, -23156, -23162, -23187, -23163, -23158, -23184, -23169, -23156, -23179, -23175, -23156, -23174, -23178, -23157, -23169, -23181, -23161, -23165, -23181, -23165, -23161, -23180, -23169, -23159, -23177, -23173, -23159, -23173, -23177, -23160, -23169, -23179, -23162, -23165, -23179, -23166, -23162, -23178, -23169, -23160, -23176, -23173, -23160, -23173, -23176, -23160, -23169, -23178, -23162, -23166, -23179, -23165, -23162, -23179, -23169, -23160, -23177, -23173, -23159, -23173, -23177, -23159, -23169, -23180, -23161, -23165, -23181, -23165, -23161, -23181, -23169, -23157, -23178, -23174, -23156, -23175, -23179, -23156, -23169, -23184, -23158, -23163, -23187, -23162, -23156, -23187, -23169, -23149, -23185, -23178, -23144, -23179, -23190, -23141, -23169, -23203, -23141, -23152, -23219, -23148, -23122, -23242, -23170, -23047, -23306, -23331},
    {0, 22741, 23007, 23111, 23170, 23206, 23225, 23231, 23228, 23218, 23203, 23186, 23169, 23155, 23145, 23140, 23139, 23143, 23150, 23160, 23169, 23178, 23185, 23189, 23190, 23188, 23183, 23176, 23169, 23163, 23157, 23154, 23153, 23155, 23158, 23163, 23169, 23175, 23179, 23182, 23183, 23182, 23179, 23174, 23169, 23164, 23160, 23158, 23157, 23158, 23161, 23165, 23169, 23174, 23178, 23180, 23181, 23180, 23177, 23174, 23169, 23165, 23161, 23159, 23158, 23159, 23161, 23165, 23169, 23174, 23177, 23180, 23181, 23180, 23178, 23174, 23169, 23165, 23161, 23158, 23157, 23158, 23160, 23164, 23169, 23174, 23179, 23182, 23183, 23182, 23179, 23175, 23169, 23163, 23158, 23155, 23153, 23154, 23157, 23163, 23169, 23176, 23183, 23188, 23190, 23189, 23185, 23178, 23169, 23160, 23150, 23143, 23139, 23140, 23145, 23155, 23169, 23186, 23203, 23218, 23228, 23231, 23225, 23206, 23170, 23111, 23007, 22741, -1, -22741, -23007, -23111, -23170, -23206, -23225, -23231, -23228, -23218, -23203, -23186, -23169, -23155, -23145, -23140, -23139, -23143, -23150, -23160, -23169, -23178, -23185, -23189, -23190, -23188, -23183, -23176, -23169, -23163, -23157, -23154, -23153, -23155, -23158, -23163, -23169, -23175, -23179, -23182, -23183, -23182, -23179, -23174, -23169, -23164, -23160, -23158, -23157, -23158, -23161, -23165, -23169, -23174, -23178, -23180, -23181, -23180, -23177, -23174, -23169, -23165, -23161, -23159, -23158, -23159, -23161, -23165, -23169, -23174, -23177, -23180, -23181, -23180, -23178, -23174, -23169, -23165, -23161, -23158, -23157, -23158, -23160, -23164, -23169, -23174, -23179, -23182, -23183, -23182, -23179, -23175, -23169, -23163, -23158, -23155, -23153, -23154, -23157, -23163, -23169, -23176, -23183, -23188, -23190, -23189, -23185, -23178, -23169, -23160, -23150, -23143, -23139, -23140, -23145, -23155, -23169, -23186, -23203, -23218, -23228, -23231, -23225, -23206, -23170, -23111, -23007, -22741},
    {0, 23356, 23370, 22998, 23168, 23273, 23104, 23138, 23239, 23146, 23129, 23216, 23169, 23129, 23198, 23184, 23134, 23182, 23192, 23141, 23169, 23195, 23151, 23159, 23194, 23160, 23153, 23190, 23169, 23150, 23184, 23177, 23150, 23176, 23182, 23153, 23169, 23185, 23157, 23163, 23186, 23163, 23158, 23184, 23169, 23155, 23180, 23175, 23154, 23175, 23180, 23156, 23169, 23182, 23159, 23164, 23183, 23164, 23159, 23182, 23169, 23157, 23179, 23174, 23156, 23175, 23179, 23157, 23169, 23182, 23160, 23164, 23183, 23164, 23159, 23182, 23169, 23156, 23180, 23175, 23154, 23175, 23180, 23155, 23169, 23184, 23158, 23163, 23186, 23163, 23157, 23185, 23169, 23153, 23182, 23176, 23150, 23177, 23184, 23150, 23169, 23190, 23153, 23160, 23194, 23159, 23150, 23195, 23169, 23141, 23192, 23182, 23134, 23184, 23198, 23129, 23169, 23216, 23129, 23146, 23239, 23138, 23104, 23273, 23168, 22998, 23370, 23356, -1, -23356, -23370, -22998, -23168, -23273, -23104, -23138, -23239, -23146, -23129, -23216, -23169, -23129, -23198, -23184, -23134, -23182, -23192, -23141, -23169, -23195, -23150, -23159, -23194, -23160, -23153, -23190, -23169, -23150, -23184, -23177, -23150, -23176, -23182, -23153, -23169, -23185, -23157, -23163, -23186, -23163, -23158, -23184, -23169, -23155, -23180, -23175, -23154, -23175, -23180, -23156, -23169, -23182, -23159, -23164, -23183, -23164, -23159, -23182, -23169, -23157, -23179, -23174, -23156, -23175, -23179, -23157, -23169, -23182, -23159, -23164, -23183, -23164, -23159, -23182, -23169, -23156, -23180, -23175, -23154, -23175, -23180, -23155, -23169, -23184, -23158, -23163, -23186, -23163, -23157, -23185, -23169, -23153, -23182, -23176, -23150, -23177, -23184, -23150, -23169, -23190, -23153, -23160, -23194, -23159, -23151, -23195, -23169, -23141, -23192, -23182, -23134, -23184, -23198, -23129, -23169, -23216, -23129, -23146, -23239, -23138, -23104, -23273, -23168, -22998, -23370, -23356},
    {0, 23045, 23463, 23314, 23075, 23045, 23181, 23263, 23201, 23109, 23118, 23196, 23224, 23172, 23123, 23146, 23199, 23204, 23158, 23133, 23163, 23199, 23189, 23151, 23142, 23173, 23196, 23178, 23148, 23151, 23181, 23192, 23169, 23148, 23159, 23185, 23187, 23162, 23149, 23166, 23187, 23181, 23157, 23152, 23173, 23187, 23174, 23154, 23157, 23178, 23186, 23168, 23153, 23162, 23182, 23183, 23163, 23153, 23168, 23185, 23178, 23158, 23155, 23173, 23185, 23173, 23155, 23158, 23178, 23185, 23168, 23153, 23163, 23183, 23182, 23162, 23153, 23168, 23186, 23178, 23157, 23154, 23174, 23187, 23173, 23152, 23157, 23181, 23187, 23166, 23149, 23162, 23187, 23185, 23159, 23148, 23169, 23192, 23181, 23151, 23148, 23178, 23196, 23173, 23142, 23151, 23189, 23199, 23163, 23133, 23158, 23204, 23199, 23146, 23123, 23172, 23224, 23196, 23118, 23109, 23201, 23263, 23181, 23045, 23075, 23314, 23463, 23045, -1, -23045, -23463, -23314, -23075, -23045, -23181, -23263, -23201, -23109, -23118, -23196, -23224, -23172, -23123, -23146, -23199, -23204, -23158, -23133, -23163, -23199, -23189, -23151, -23142, -23173, -23196, -23178, -23148, -23151, -23181, -23192, -23169, -23148, -23159, -23185, -23187, -23162, -23149, -23166, -23187, -23181, -23157, -23152, -23173, -23187, -23174, -23154, -23157, -23178, -23186, -23168, -23153, -23162, -23182, -23183, -23163, -23153, -23168, -23185, -23178, -23158, -23155, -23173, -23185, -23173, -23155, -23158, -23178, -23185, -23168, -23153, -23163, -23183, -23182, -23162, -23153, -23168, -23186, -23178, -23157, -23154, -23174, -23187, -23173, -23152, -23157, -23181, -23187, -23166, -23149, -23162, -23187, -23185, -23159, -23148, -23169, -23192, -23181, -23151, -23148, -23178, -23196, -23173, -23142, -23151, -23189, -23199, -23163, -23133, -23158, -23204, -23199, -23146, -23123, -23172, -23224, -23196, -23118, -23109, -23201, -23263, -23181, -23045, -23075, -23314, -23463, -23045},
    {0, 23556, 23331, 22910, 23306, 23202, 23047, 23262, 23170, 23096, 23242, 23156, 23122, 23229, 23148, 23139, 23220, 23143, 23152, 23211, 23140, 23161, 23204, 23139, 23169, 23197, 23139, 23175, 23191, 23140, 23180, 23185, 23142, 23184, 23179, 23144, 23187, 23174, 23147, 23189, 23169, 23150, 23190, 23165, 23154, 23190, 23161, 23158, 23190, 23158, 23161, 23189, 23155, 23165, 23188, 23153, 23169, 23186, 23151, 23173, 23183, 23150, 23177, 23180, 23150, 23180, 23177, 23150, 23183, 23173, 23151, 23186, 23169, 23153, 23188, 23165, 23155, 23189, 23161, 23158, 23190, 23158, 23161, 23190, 23154, 23165, 23190, 23150, 23169, 23189, 23147, 23174, 23187, 23144, 23179, 23184, 23142, 23185, 23180, 23140, 23191, 23175, 23139, 23197, 23169, 23139, 23204, 23162, 23140, 23211, 23152, 23143, 23220, 23139, 23148, 23229, 23122, 23156, 23242, 23096, 23170, 23262, 23047, 23202, 23306, 22910, 23331, 23556, 0, -23556, -23331, -22910, -23306, -23202, -23047, -23262, -23170, -23096, -23242, -23156, -23122, -23229, -23148, -23139, -23220, -23143, -23152, -23211, -23140, -23162, -23204, -23139, -23169, -23197, -23139, -23175, -23191, -23140, -23180, -23185, -23142, -23184, -23179, -23144, -23187, -23174, -23147, -23189, -23169, -23150, -23190, -23165, -23154, -23190, -23161, -23158, -23190, -23158, -23161, -23189, -23155, -23165, -23188, -23153, -23169, -23186, -23151, -23173, -23183, -23150, -23177, -23180, -23150, -23180, -23177, -23150, -23183, -23173, -23151, -23186, -23169, -23153, -23188, -23165, -23155, -23189, -23161, -23158, -23190, -23158, -23161, -23190, -23154, -23165, -23190, -23150, -23169, -23189, -23147, -23174, -23187, -23144, -23179, -23184, -23142, -23185, -23180, -23140, -23191, -23175, -23139, -23197, -23169, -23139, -23204, -23162, -23140, -23211, -23152, -23143, -23220, -23139, -23148, -23229, -23122, -23156, -23242, -23096, -23170, -23262, -23047, -23202, -23306, -22909, -23331, -23556},
    {0, 22259, 22741, 22913, 23006, 23067, 23111, 23145, 23170, 23191, 23206, 23218, 23226, 23230, 23232, 23232, 23229, 23225, 23219, 23212, 23204, 23195, 23186, 23178, 23169, 23161, 23154, 23148, 23144, 23140, 23138, 23137, 23137, 23138, 23141, 23144, 23148, 23153, 23158, 23164, 23169, 23175, 23180, 23184, 23188, 23191, 23193, 23194, 23194, 23193, 23192, 23189, 23186, 23183, 23178, 23174, 23169, 23165, 23160, 23156, 23153, 23150, 23148, 23147, 23146, 23147, 23148, 23150, 23153, 23156, 23160, 23165, 23169, 23174, 23178, 23182, 23186, 23189, 23192, 23193, 23194, 23194, 23193, 23191, 23188, 23184, 23180, 23175, 23169, 23164, 23158, 23153, 23148, 23144, 23141, 23138, 23137, 23137, 23138, 23140, 23144, 23148, 23154, 23161, 23169, 23178, 23186, 23195, 23204, 23212, 23219, 23225, 23229, 23232, 23232, 23230, 23226, 23218, 23206, 23191, 23170, 23145, 23111, 23067, 23006, 22913, 22741, 22259, 0, -22259, -22741, -22913, -23006, -23067, -23111, -23145, -23170, -23191, -23206, -23218, -23226, -23230, -23232, -23232, -23229, -23225, -23219, -23212, -23204, -23195, -23186, -23178, -23169, -23161, -23154, -23148, -23144, -23140, -23138, -23137, -23137, -23138, -23141, -23144, -23148, -23153, -23158, -23164, -23169, -23175, -23180, -23184, -23188, -23191, -23193, -23194, -23194, -23193, -23192, -23189, -23186, -23183, -23178, -23174, -23169, -23165, -23160, -23156, -23153, -23150, -23148, -23147, -23146, -23147, -23148, -23150, -23153, -23156, -23160, -23165, -23169, -23174, -23178, -23183, -23186, -23189, -23192, -23193, -23194, -23194, -23193, -23191, -23188, -23184, -23180, -23175, -23169, -23164, -23158, -23153, -23148, -23144, -23141, -23138, -23137, -23137, -23138, -23140, -23144, -23148, -23154, -23161, -23169, -23178, -23186, -23195, -23204, -23212, -23219, -23225, -23229, -23232, -23232, -23230, -23226, -23218, -23206, -23191, -23170, -23145, -23111, -23067, -23006, -22913, -22741, -22259},
    {0, 23852, 23356, 22805, 23370, 23209, 22998, 23303, 23168, 23066, 23273, 23148, 23103, 23255, 23138, 23127, 23241, 23131, 23145, 23229, 23128, 23159, 23218, 23127, 23169, 23209, 23127, 23178, 23200, 23128, 23185, 23191, 23131, 23190, 23183, 23134, 23194, 23176, 23138, 23197, 23169, 23142, 23199, 23163, 23147, 23199, 23158, 23153, 23199, 23153, 23158, 23197, 23149, 23164, 23195, 23146, 23169, 23192, 23144, 23175, 23189, 23142, 23180, 23184, 23142, 23184, 23180, 23142, 23189, 23175, 23144, 23192, 23169, 23146, 23195, 23164, 23149, 23197, 23158, 23153, 23199, 23153, 23158, 23199, 23147, 23163, 23199, 23142, 23169, 23197, 23138, 23176, 23194, 23134, 23183, 23190, 23131, 23191, 23185, 23128, 23200, 23178, 23127, 23209, 23169, 23127, 23218, 23159, 23128, 23229, 23145, 23131, 23241, 23127, 23138, 23255, 23103, 23148, 23273, 23066, 23168, 23303, 22998, 23209, 23370, 22805, 23356, 23852, 0, -23852, -23356, -22805, -23370, -23209, -22998, -23303, -23168, -23066, -23273, -23148, -23103, -23255, -23138, -23127, -23241, -23131, -23145, -23229, -23128, -23159, -23218, -23127, -23169, -23209, -23127, -23178, -23200, -23128, -23185, -23191, -23131, -23190, -23183, -23134, -23194, -23176, -23138, -23197, -23169, -23142, -23199, -23163, -23147, -23199, -23158, -23153, -23199, -23153, -23158, -23197, -23149, -23164, -23195, -23146, -23169, -23192, -23144, -23175, -23189, -23142, -23180, -23184, -23142, -23184, -23180, -23142, -23189, -23175, -23144, -23192, -23169, -23146, -23195, -23164, -23149, -23197, -23158, -23153, -23199, -23153, -23158, -23199, -23147, -23163, -23199, -23142, -23169, -23197, -23138, -23176, -23194, -23134, -23183, -23190, -23131, -23191, -23185, -23128, -23200, -23178, -23127, -23209, -23169, -23127, -23218, -23159, -23128, -23229, -23145, -23131, -23241, -23127, -23138, -23255, -23103, -23148, -23273, -23066, -23168, -23303, -22998, -23209, -23370, -22805, -23356, -23852},
    {0, 24062, 23077, 22946, 23477, 22916, 23289, 23191, 23049, 23317, 23059, 23203, 23213, 23077, 23264, 23112, 23169, 23221, 23094, 23233, 23143, 23150, 23222, 23109, 23210, 23164, 23139, 23220, 23122, 23193, 23179, 23133, 23215, 23135, 23178, 23190, 23130, 23209, 23147, 23165, 23197, 23131, 23201, 23158, 23155, 23201, 23134, 23192, 23169, 23147, 23203, 23139, 23182, 23179, 23141, 23202, 23146, 23172, 23188, 23138, 23199, 23154, 23163, 23194, 23137, 23194, 23163, 23154, 23199, 23138, 23188, 23172, 23146, 23202, 23141, 23179, 23182, 23139, 23203, 23147, 23169, 23192, 23134, 23201, 23155, 23158, 23201, 23131, 23197, 23165, 23147, 23209, 23130, 23190, 23178, 23135, 23215, 23133, 23179, 23193, 23122, 23220, 23139, 23164, 23210, 23109, 23222, 23150, 23143, 23233, 23094, 23221, 23169, 23112, 23264, 23077, 23213, 23203, 23059, 23317, 23049, 23191, 23289, 22916, 23477, 22946, 23077, 24062, 0, -24062, -23077, -22946, -23477, -22916, -23289, -23191, -23049, -23317, -23059, -23203, -23213, -23077, -23264, -23112, -23169, -23221, -23094, -23233, -23143, -23150, -23222, -23109, -23210, -23164, -23139, -23220, -23122, -23193, -23179, -23133, -23215, -23135, -23178, -23190, -23130, -23209, -23147, -23165, -23197, -23131, -23201, -23158, -23155, -23201, -23134, -23192, -23169, -23147, -23203, -23139, -23182, -23179, -23141, -23202, -23146, -23172, -23188, -23138, -23199, -23154, -23163, -23194, -23137, -23194, -23163, -23154, -23199, -23138, -23188, -23172, -23146, -23202, -23141, -23179, -23182, -23139, -23203, -23147, -23169, -23192, -23134, -23201, -23155, -23158, -23201, -23131, -23197, -23165, -23147, -23209, -23130, -23190, -23178, -23135, -23215, -23133, -23179, -23193, -23122, -23220, -23139, -23164, -23210, -23109, -23222, -23150, -23143, -23233, -23094, -23221, -23169, -23112, -23264, -23077, -23213, -23203, -23059, -23317, -23049, -23191, -23289, -22916, -23477, -22946, -23077, -24062},
    {0, 22261, 23556, 23686, 23331, 22975, 22909, 23100, 23306, 23338, 23202, 23058, 23046, 23156, 23264, 23264, 23170, 23085, 23094, 23177, 23245, 23230, 23155, 23100, 23120, 23188, 23233, 23209, 23146, 23110, 23137, 23195, 23224, 23195, 23140, 23118, 23150, 23200, 23216, 23183, 23136, 23125, 23160, 23203, 23210, 23174, 23134, 23132, 23169, 23206, 23203, 23165, 23132, 23138, 23177, 23207, 23197, 23158, 23131, 23145, 23184, 23208, 23191, 23151, 23131, 23151, 23191, 23208, 23184, 23145, 23131, 23158, 23197, 23207, 23177, 23138, 23132, 23165, 23203, 23206, 23169, 23132, 23134, 23174, 23210, 23203, 23160, 23125, 23136, 23183, 23216, 23200, 23150, 23118, 23140, 23195, 23224, 23195, 23137, 23110, 23146, 23209, 23233, 23188, 23120, 23100, 23155, 23230, 23245, 23177, 23094, 23085, 23170, 23264, 23264, 23156, 23046, 23058, 23202, 23338, 23306, 23099, 22909, 22975, 23331, 23686, 23556, 22261, 0, -22261, -23556, -23686, -23331, -22975, -22909, -23100, -23306, -23338, -23202, -23058, -23046, -23156, -23264, -23264, -23170, -23085, -23094, -23177, -23245, -23230, -23155, -23100, -23120, -23188, -23233, -23209, -23146, -23110, -23137, -23195, -23224, -23195, -23140, -23118, -23150, -23200, -23216, -23183, -23136, -23125, -23160, -23203, -23210, -23174, -23134, -23132, -23169, -23206, -23203, -23165, -23132, -23138, -23177, -23207, -23197, -23158, -23131, -23145, -23184, -23208, -23191, -23151, -23131, -23151, -23191, -23208, -23184, -23145, -23131, -23158, -23197, -23207, -23177, -23138, -23132, -23165, -23203, -23206, -23169, -23132, -23134, -23174, -23210, -23203, -23160, -23125, -23136, -23183, -23216, -23200, -23150, -23118, -23140, -23195, -23224, -23195, -23137, -23110, -23146, -23209, -23233, -23188, -23120, -23100, -23155, -23230, -23245, -23177, -23094, -23085, -23170, -23264, -23264, -23156, -23046, -23058, -23202, -23338, -23306, -23099, -22909, -22975, -23331, -23686, -23556, -22261},
    {0, 21345, 22259, 22577, 22741, 22842, 22912, 22965, 23006, 23039, 23066, 23090, 23111, 23128, 23144, 23158, 23170, 23181, 23191, 23200, 23207, 23214, 23219, 23224, 23228, 23231, 23234, 23235, 23236, 23237, 23236, 23236, 23234, 23232, 23230, 23227, 23224, 23221, 23217, 23213, 23208, 23204, 23199, 23194, 23189, 23184, 23179, 23174, 23169, 23164, 23160, 23155, 23151, 23147, 23143, 23139, 23136, 23133, 23131, 23128, 23127, 23125, 23124, 23123, 23123, 23123, 23124, 23125, 23127, 23128, 23131, 23133, 23136, 23139, 23143, 23147, 23151, 23155, 23160, 23164, 23169, 23174, 23179, 23184, 23189, 23194, 23199, 23204, 23208, 23213, 23217, 23221, 23224, 23227, 23230, 23232, 23234, 23236, 23236, 23237, 23236, 23235, 23234, 23231, 23228, 23224, 23219, 23214, 23207, 23200, 23191, 23181, 23170, 23158, 23144, 23128, 23111, 23090, 23066, 23039, 23006, 22965, 22912, 22842, 22741, 22577, 22259, 21345, 0, -21345, -22259, -22577, -22741, -22842, -22912, -22965, -23006, -23039, -23066, -23090, -23111, -23128, -23144, -23158, -23170, -23181, -23191, -23200, -23207, -23214, -23219, -23224, -23228, -23231, -23234, -23235, -23236, -23237, -23236, -23236, -23234, -23232, -23230, -23227, -23224, -23221, -23217, -23213, -23208, -23204, -23199, -23194, -23189, -23184, -23179, -23174, -23169, -23164, -23160, -23155, -23151, -23147, -23143, -23139, -23136, -23133, -23131, -23128, -23127, -23125, -23124, -23123, -23123, -23123, -23124, -23125, -23127, -23128, -23131, -23133, -23136, -23139, -23143, -23147, -23151, -23155, -23160, -23164, -23169, -23174, -23179, -23184, -23189, -23194, -23199, -23204, -23208, -23213, -23217, -23221, -23224, -23227, -23230, -23232, -23234, -23236, -23236, -23237, -23236, -23235, -23234, -23231, -23228, -23224, -23219, -23214, -23207, -23200, -23191, -23181, -23170, -23158, -23144, -23128, -23111, -23090, -23066, -23039, -23006, -22965, -22912, -22842, -22741, -22577, -22259, -21345},
    {0, 22491, 23852, 23887, 23357, 22872, 22804, 23085, 23371, 23405, 23209, 23008, 22996, 23155, 23305, 23302, 23168, 23049, 23063, 23182, 23276, 23254, 23148, 23071, 23100, 23197, 23259, 23225, 23136, 23086, 23124, 23207, 23246, 23205, 23128, 23097, 23142, 23213, 23236, 23188, 23123, 23107, 23157, 23218, 23226, 23175, 23119, 23117, 23169, 23221, 23217, 23164, 23116, 23125, 23180, 23223, 23209, 23153, 23115, 23134, 23190, 23224, 23200, 23143, 23115, 23143, 23200, 23224, 23190, 23134, 23115, 23153, 23209, 23223, 23180, 23125, 23116, 23164, 23217, 23221, 23169, 23117, 23119, 23175, 23226, 23218, 23157, 23107, 23123, 23188, 23236, 23213, 23142, 23097, 23128, 23205, 23246, 23207, 23124, 23086, 23136, 23225, 23259, 23197, 23100, 23071, 23148, 23254, 23276, 23182, 23063, 23049, 23168, 23302, 23305, 23155, 22996, 23008, 23209, 23405, 23371, 23085, 22804, 22872, 23357, 23887, 23852, 22491, 0, -22491, -23852, -23887, -23357, -22872, -22804, -23085, -23371, -23405, -23209, -23008, -22996, -23155, -23305, -23302, -23168, -23049, -23063, -23182, -23276, -23254, -23148, -23071, -23100, -23197, -23259, -23225, -23136, -23086, -23124, -23207, -23246, -23205, -23128, -23097, -23142, -23213, -23236, -23188, -23123, -23107, -23157, -23218, -23226, -23175, -23119, -23117, -23169, -23221, -23217, -23164, -23116, -23125, -23180, -23223, -23209, -23153, -23115, -23134, -23190, -23224, -23200, -23143, -23115, -23143, -23200, -23224, -23190, -23134, -23115, -23153, -23209, -23223, -23180, -23125, -23116, -23164, -23217, -23221, -23169, -23117, -23119, -23175, -23226, -23218, -23157, -23107, -23123, -23188, -23236, -23213, -23142, -23097, -23128, -23205, -23246, -23207, -23124, -23086, -23136, -23225, -23259, -23197, -23100, -23071, -23148, -23254, -23276, -23182, -23063, -23049, -23168, -23302, -23305, -23155, -22996, -23008, -23209, -23405, -23371, -23085, -22804, -22872, -23357, -23887, -23852, -22491},
    {0, 24427, 24063, 22372, 23077, 23684, 22945, 22922, 23478, 23176, 22914, 23318, 23290, 22966, 23191, 23331, 23047, 23102, 23320, 23133, 23055, 23276, 23205, 23048, 23215, 23252, 23072, 23155, 23270, 23117, 23108, 23258, 23169, 23085, 23225, 23213, 23086, 23182, 23240, 23110, 23140, 23246, 23147, 23109, 23231, 23187, 23098, 23200, 23219, 23106, 23163, 23236, 23131, 23129, 23233, 23166, 23108, 23214, 23200, 23104, 23182, 23225, 23119, 23147, 23234, 23147, 23119, 23225, 23182, 23104, 23200, 23214, 23108, 23166, 23233, 23129, 23131, 23236, 23163, 23106, 23219, 23200, 23098, 23187, 23231, 23109, 23147, 23246, 23140, 23110, 23240, 23182, 23086, 23213, 23225, 23085, 23169, 23258, 23108, 23117, 23270, 23155, 23072, 23252, 23215, 23048, 23205, 23276, 23055, 23133, 23320, 23102, 23047, 23331, 23191, 22966, 23290, 23318, 22914, 23176, 23478, 22922, 22945, 23684, 23077, 22372, 24063, 24427, 0, -24427, -24063, -22372, -23077, -23684, -22945, -22922, -23478, -23176, -22914, -23318, -23290, -22966, -23191, -23331, -23047, -23102, -23320, -23133, -23055, -23276, -23205, -23048, -23215, -23252, -23072, -23154, -23270, -23117, -23108, -23258, -23169, -23085, -23225, -23213, -23086, -23182, -23240, -23110, -23140, -23246, -23147, -23109, -23231, -23187, -23098, -23200, -23219, -23106, -23163, -23236, -23131, -23129, -23233, -23166, -23108, -23214, -23200, -23104, -23182, -23225, -23119, -23147, -23234, -23147, -23119, -23225, -23182, -23104, -23200, -23214, -23108, -23166, -23233, -23129, -23131, -23236, -23163, -23106, -23219, -23200, -23098, -23187, -23231, -23109, -23147, -23246, -23140, -23110, -23240, -23182, -23086, -23213, -23225, -23085, -23169, -23258, -23108, -23117, -23270, -23155, -23072, -23252, -23215, -23048, -23205, -23276, -23055, -23133, -23320, -23102, -23047, -23331, -23191, -22966, -23290, -23318, -22914, -23176, -23478, -22922, -22945, -23684, -23077, -22372, -24063, -24427},
    {0, 25781, 22261, 23209, 23557, 22610, 23687, 22794, 23332, 23211, 22974, 23438, 22906, 23354, 23099, 23121, 23309, 22984, 23342, 23052, 23203, 23220, 23054, 23311, 23040, 23250, 23155, 23117, 23270, 23051, 23271, 23111, 23170, 23223, 23077, 23271, 23086, 23212, 23178, 23113, 23255, 23079, 23239, 23139, 23152, 23227, 23087, 23251, 23110, 23190, 23193, 23109, 23248, 23094, 23220, 23158, 23139, 23232, 23091, 23240, 23126, 23173, 23206, 23103, 23246, 23103, 23206, 23173, 23126, 23240, 23091, 23232, 23139, 23158, 23220, 23094, 23248, 23109, 23193, 23190, 23110, 23251, 23087, 23227, 23152, 23139, 23239, 23079, 23255, 23113, 23178, 23212, 23086, 23271, 23077, 23223, 23170, 23111, 23271, 23051, 23270, 23117, 23155, 23250, 23040, 23311, 23054, 23220, 23203, 23052, 23342, 22984, 23309, 23121, 23099, 23354, 22906, 23438, 22974, 23211, 23332, 22794, 23687, 22610, 23557, 23209, 22261, 25781, 0, -25781, -22261, -23209, -23557, -22610, -23687, -22794, -23332, -23211, -22974, -23438, -22906, -23354, -23099, -23121, -23309, -22984, -23342, -23052, -23203, -23220, -23054, -23311, -23040, -23250, -23155, -23117, -23270, -23051, -23271, -23111, -23170, -23223, -23077, -23271, -23086, -23212, -23178, -23113, -23255, -23079, -23239, -23139, -23152, -23227, -23087, -23251, -23110, -23190, -23193, -23109, -23248, -23094, -23220, -23158, -23139, -23232, -23091, -23240, -23126, -23173, -23206, -23103, -23246, -23103, -23206, -23173, -23126, -23240, -23091, -23232, -23139, -23158, -23220, -23094, -23248, -23109, -23193, -23190, -23110, -23251, -23087, -23227, -23152, -23139, -23239, -23079, -23255, -23113, -23178, -23212, -23086, -23271, -23077, -23223, -23170, -23111, -23271, -23051, -23270, -23117, -23155, -23250, -23040, -23311, -23054, -23220, -23203, -23052, -23342, -22984, -23309, -23121, -23099, -23354, -22906, -23438, -22974, -23211, -23332, -22794, -23687, -22610, -23557, -23209, -22261, -25781},
    {0, 26184, 21344, 24330, 22258, 23870, 22575, 23660, 22738, 23538, 22840, 23458, 22909, 23399, 22961, 23354, 23002, 23318, 23035, 23288, 23063, 23263, 23087, 23241, 23108, 23221, 23126, 23204, 23142, 23189, 23157, 23175, 23170, 23162, 23182, 23151, 23193, 23140, 23203, 23131, 23212, 23122, 23220, 23114, 23227, 23108, 23234, 23101, 23240, 23096, 23245, 23091, 23249, 23087, 23253, 23084, 23256, 23081, 23258, 23079, 23260, 23078, 23261, 23077, 23261, 23077, 23261, 23078, 23260, 23079, 23258, 23081, 23256, 23084, 23253, 23087, 23249, 23091, 23245, 23096, 23240, 23101, 23234, 23108, 23227, 23114, 23220, 23122, 23212, 23131, 23203, 23140, 23193, 23151, 23182, 23162, 23170, 23175, 23157, 23189, 23142, 23204, 23126, 23221, 23108, 23241, 23087, 23263, 23063, 23288, 23035, 23318, 23002, 23354, 22961, 23399, 22909, 23458, 22840, 23538, 22738, 23660, 22575, 23870, 22258, 24330, 21344, 26184, 0, -26184, -21344, -24330, -22258, -23870, -22575, -23660, -22738, -23538, -22840, -23458, -22909, -23399, -22961, -23354, -23002, -23318, -23035, -23288, -23063, -23263, -23087, -23241, -23108, -23221, -23126, -23204, -23142, -23189, -23157, -23175, -23170, -23162, -23182, -23151, -23193, -23140, -23203, -23131, -23212, -23122, -23220, -23114, -23227, -23108, -23234, -23101, -23240, -23096, -23245, -23091, -23249, -23087, -23253, -23084, -23256, -23081, -23258, -23079, -23260, -23078, -23261, -23077, -23261, -23077, -23261, -23078, -23260, -23079, -23258, -23081, -23256, -23084, -23253, -23087, -23249, -23091, -23245, -23096, -23240, -23101, -23234, -23108, -23227, -23114, -23220, -23122, -23212, -23131, -23203, -23140, -23193, -23151, -23182, -23162, -23170, -23175, -23157, -23189, -23142, -23204, -23126, -23221, -23108, -23241, -23087, -23263, -23063, -23288, -23035, -23318, -23002, -23354, -22961, -23399, -22909, -23458, -22840, -23538, -22738, -23660, -22575, -23870, -22258, -24330, -21344, -26183},
    {0, 25674, 22491, 22922, 23852, 22328, 23889, 22674, 23358, 23263, 22870, 23556, 22800, 23419, 23083, 23088, 23375, 22905, 23411, 23009, 23210, 23247, 23002, 23371, 22988, 23280, 23154, 23091, 23313, 23002, 23312, 23089, 23168, 23248, 23038, 23313, 23052, 23228, 23184, 23089, 23291, 23041, 23267, 23128, 23144, 23252, 23053, 23285, 23086, 23197, 23203, 23084, 23281, 23062, 23240, 23153, 23126, 23258, 23059, 23269, 23108, 23175, 23221, 23075, 23278, 23075, 23221, 23175, 23108, 23269, 23059, 23258, 23126, 23153, 23240, 23062, 23281, 23084, 23203, 23197, 23086, 23285, 23053, 23252, 23144, 23128, 23267, 23041, 23291, 23089, 23184, 23228, 23052, 23313, 23038, 23248, 23168, 23089, 23312, 23002, 23313, 23091, 23154, 23280, 22988, 23371, 23002, 23247, 23210, 23009, 23411, 22905, 23375, 23088, 23083, 23419, 22800, 23556, 22870, 23263, 23358, 22674, 23889, 22328, 23852, 22922, 22491, 25674, 0, -25674, -22491, -22922, -23852, -22328, -23889, -22674, -23358, -23263, -22870, -23556, -22800, -23419, -23083, -23088, -23375, -22905, -23411, -23009, -23210, -23247, -23002, -23371, -22988, -23280, -23154, -23091, -23313, -23002, -23312, -23089, -23168, -23248, -23038, -23313, -23052, -23228, -23184, -23089, -23291, -23041, -23267, -23128, -23144, -23252, -23053, -23285, -23086, -23197, -23203, -23084, -23281, -23062, -23240, -23153, -23126, -23258, -23059, -23269, -23108, -23175, -23221, -23075, -23278, -23075, -23221, -23175, -23108, -23269, -23059, -23258, -23126, -23153, -23240, -23062, -23281, -23084, -23203, -23197, -23086, -23285, -23053, -23252, -23144, -23128, -23267, -23041, -23291, -23089, -23184, -23228, -23052, -23313, -23038, -23248, -23168, -23089, -23312, -23002, -23313, -23091, -23154, -23280, -22988, -23371, -23002, -23247, -23210, -23009, -23411, -22905, -23375, -23088, -23083, -23419, -22800, -23556, -22870, -23263, -23358, -22674, -23889, -22328, -23852, -22922, -22491, -25674},
    {0, 24518, 24311, 21445, 24138, 23209, 22447, 23871, 22951, 22842, 23691, 22858, 23067, 23542, 22836, 23211, 23412, 22855, 23304, 23297, 22899, 23358, 23198, 22960, 23381, 23118, 23029, 23377, 23059, 23100, 23353, 23020, 23167, 23313, 23003, 23225, 23263, 23006, 23270, 23209, 23025, 23299, 23156, 23059, 23312, 23108, 23101, 23308, 23071, 23148, 23290, 23047, 23195, 23259, 23037, 23237, 23220, 23042, 23269, 23176, 23061, 23290, 23132, 23092, 23298, 23092, 23132, 23290, 23061, 23176, 23269, 23042, 23220, 23237, 23037, 23259, 23195, 23047, 23290, 23148, 23071, 23308, 23101, 23108, 23312, 23059, 23156, 23299, 23025, 23209, 23270, 23006, 23263, 23225, 23003, 23313, 23167, 23020, 23353, 23100, 23059, 23377, 23029, 23118, 23381, 22960, 23198, 23358, 22899, 23297, 23304, 22855, 23412, 23211, 22836, 23542, 23067, 22858, 23691, 22842, 22951, 23871, 22447, 23209, 24138, 21445, 24311, 24518, 0, -24518, -24311, -21445, -24138, -23209, -22447, -23871, -22951, -22842, -23691, -22858, -23067, -23542, -22836, -23211, -23412, -22855, -23304, -23297, -22899, -23358, -23198, -22960, -23381, -23118, -23029, -23377, -23059, -23100, -23353, -23020, -23167, -23313, -23003, -23225, -23263, -23006, -23270, -23209, -23025, -23299, -23156, -23059, -23312, -23108, -23101, -23308, -23071, -23148, -23290, -23047, -23195, -23259, -23037, -23237, -23220, -23042, -23269, -23176, -23061, -23290, -23132, -23092, -23298, -23092, -23132, -23290, -23061, -23176, -23269, -23042, -23220, -23237, -23037, -23259, -23195, -23047, -23290, -23148, -23071, -23308, -23101, -23108, -23312, -23059, -23156, -23299, -23025, -23209, -23270, -23006, -23263, -23225, -23003, -23313, -23167, -23020, -23353, -23100, -23059, -23377, -23029, -23118, -23381, -22960, -23198, -23358, -22899, -23297, -23304, -22855, -23412, -23211, -22836, -23542, -23067, -22858, -23691, -22842, -22951, -23871, -22447, -23209, -24138, -21445, -24311, -24518},
    {0, 22813, 25710, 21814, 22404, 24339, 23056, 22347, 23676, 23527, 22556, 23198, 23656, 22875, 22903, 23566, 23182, 22804, 23358, 23390, 22872, 23132, 23459, 23040, 22971, 23399, 23224, 22921, 23257, 23351, 22982, 23102, 23384, 23111, 22996, 23323, 23247, 22976, 23204, 23334, 23040, 23083, 23343, 23153, 23009, 23276, 23264, 23009, 23168, 23325, 23080, 23067, 23316, 23185, 23015, 23242, 23279, 23033, 23139, 23322, 23111, 23051, 23296, 23214, 23016, 23214, 23296, 23051, 23111, 23322, 23139, 23033, 23279, 23242, 23015, 23185, 23316, 23067, 23080, 23325, 23168, 23009, 23264, 23276, 23009, 23153, 23343, 23083, 23040, 23334, 23204, 22976, 23247, 23323, 22996, 23111, 23384, 23102, 22982, 23351, 23257, 22921, 23224, 23399, 22971, 23040, 23459, 23132, 22872, 23390, 23358, 22804, 23182, 23566, 22903, 22875, 23656, 23198, 22556, 23527, 23676, 22347, 23056, 24339, 22404, 21814, 25710, 22813, 0, -22813, -25710, -21814, -22404, -24339, -23056, -22347, -23676, -23527, -22556, -23198, -23656, -22875, -22903, -23566, -23182, -22804, -23358, -23390, -22872, -23132, -23459, -23040, -22971, -23399, -23224, -22921, -23257, -23351, -22982, -23102, -23384, -23111, -22996, -23323, -23247, -22976, -23204, -23334, -23040, -23083, -23343, -23153, -23009, -23276, -23264, -23009, -23168, -23325, -23080, -23067, -23316, -23185, -23015, -23242, -23279, -23033, -23139, -23322, -23111, -23051, -23296, -23214, -23016, -23214, -23296, -23051, -23111, -23322, -23139, -23033, -23279, -23242, -23015, -23185, -23316, -23067, -23080, -23325, -23168, -23009, -23264, -23276, -23009, -23153, -23343, -23083, -23040, -23334, -23204, -22976, -23247, -23323, -22996, -23111, -23384, -23102, -22982, -23351, -23257, -22921, -23224, -23399, -22971, -23040, -23459, -23132, -22872, -23390, -23358, -22804, -23182, -23566, -22903, -22875, -23656, -23198, -22556, -23527, -23676, -22347, -23056, -24339, -22404, -21814, -25710, -22813},
    {0, 20740, 26188, 23600, 21332, 22996, 24346, 23260, 22234, 23113, 23897, 23207, 22541, 23142, 23698, 23189, 22693, 23154, 23588, 23182, 22783, 23159, 23518, 23178, 22842, 23162, 23471, 23175, 22882, 23164, 23437, 23174, 22912, 23166, 23412, 23172, 22934, 23166, 23393, 23172, 22951, 23167, 23379, 23171, 22963, 23168, 23369, 23171, 22973, 23168, 23361, 23170, 22979, 23168, 23355, 23170, 22984, 23169, 23351, 23170, 22987, 23169, 23350, 23169, 22988, 23169, 23350, 23169, 22987, 23170, 23351, 23169, 22984, 23170, 23355, 23168, 22979, 23170, 23361, 23168, 22973, 23171, 23369, 23168, 22963, 23171, 23379, 23167, 22951, 23172, 23393, 23166, 22934, 23172, 23412, 23166, 22912, 23174, 23437, 23164, 22882, 23175, 23471, 23162, 22842, 23178, 23518, 23159, 22783, 23182, 23588, 23154, 22693, 23189, 23698, 23142, 22541, 23207, 23897, 23113, 22234, 23260, 24346, 22996, 21332, 23600, 26188, 20740, 0, -20740, -26188, -23600, -21332, -22996, -24346, -23260, -22234, -23113, -23897, -23207, -22541, -23142, -23698, -23189, -22693, -23154, -23588, -23182, -22783, -23159, -23518, -23178, -22842, -23162, -23471, -23175, -22882, -23164, -23437, -23174, -22912, -23166, -23412, -23172, -22934, -23166, -23393, -23172, -22951, -23167, -23379, -23171, -22963, -23168, -23369, -23171, -22973, -23168, -23361, -23170, -22979, -23168, -23355, -23170, -22984, -23169, -23351, -23170, -22987, -23169, -23350, -23169, -22988, -23169, -23350, -23169, -22987, -23170, -23351, -23169, -22984, -23170, -23355, -23168, -22979, -23170, -23361, -23168, -22973, -23171, -23369, -23168, -22963, -23171, -23379, -23167, -22951, -23172, -23393, -23166, -22934, -23172, -23412, -23166, -22912, -23174, -23437, -23164, -22882, -23175, -23471, -23162, -22842, -23178, -23518, -23159, -22783, -23182, -23588, -23154, -22693, -23189, -23698, -23142, -22541, -23207, -23897, -23113, -22234, -23260, -24346, -22996, -21332, -23600, -26188, -20740},
    {0, 18537, 25769, 25284, 22297, 21442, 23141, 24335, 23668, 22428, 22443, 23461, 23886, 23240, 22565, 22838, 23543, 23628, 23042, 22688, 23065, 23552, 23442, 22939, 22806, 23214, 23523, 23294, 22891, 22920, 23313, 23470, 23175, 22882, 23028, 23375, 23401, 23081, 22902, 23127, 23405, 23322, 23012, 22944, 23214, 23408, 23240, 22968, 23003, 23286, 23387, 23160, 22949, 23073, 23339, 23346, 23086, 22953, 23147, 23372, 23289, 23025, 22979, 23221, 23383, 23221, 22979, 23025, 23289, 23372, 23147, 22953, 23086, 23346, 23339, 23073, 22949, 23160, 23387, 23286, 23003, 22968, 23240, 23408, 23214, 22944, 23012, 23322, 23405, 23127, 22902, 23081, 23401, 23375, 23028, 22882, 23175, 23470, 23314, 22920, 22891, 23294, 23523, 23214, 22806, 22939, 23442, 23552, 23065, 22688, 23042, 23628, 23543, 22838, 22565, 23240, 23886, 23461, 22443, 22428, 23668, 24335, 23141, 21442, 22297, 25284, 25769, 18537, 0, -18537, -25769, -25284, -22297, -21442, -23141, -24335, -23668, -22428, -22443, -23461, -23886, -23240, -22565, -22838, -23543, -23628, -23042, -22688, -23065, -23552, -23442, -22939, -22806, -23214, -23523, -23294, -22891, -22920, -23313, -23470, -23175, -22882, -23028, -23375, -23401, -23081, -22902, -23127, -23405, -23322, -23012, -22944, -23214, -23408, -23240, -22968, -23003, -23286, -23387, -23160, -22949, -23073, -23339, -23346, -23086, -22953, -23147, -23372, -23289, -23025, -22979, -23221, -23383, -23221, -22979, -23025, -23289, -23372, -23147, -22953, -23086, -23346, -23339, -23073, -22949, -23160, -23387, -23286, -23003, -22968, -23240, -23408, -23214, -22944, -23012, -23322, -23405, -23127, -22902, -23081, -23401, -23375, -23028, -22882, -23175, -23470, -23313, -22920, -22891, -23294, -23523, -23214, -22806, -22939, -23442, -23552, -23065, -22688, -23042, -23628, -23543, -22838, -22565, -23240, -23886, -23461, -22443, -22428, -23668, -24335, -23141, -21442, -22297, -25284, -25769, -18537},
    {0, 16452, 24707, 26100, 24076, 21745, 21551, 23069, 24258, 24059, 22954, 22239, 22636, 23531, 23900, 23438, 22726, 22570, 23085, 23631, 23619, 23114, 22702, 22840, 23328, 23600, 23378, 22934, 22775, 23066, 23451, 23500, 23177, 22856, 22901, 23244, 23485, 23363, 23026, 22860, 23049, 23365, 23449, 23215, 22933, 22925, 23194, 23426, 23363, 23080, 22902, 23031, 23314, 23426, 23246, 22978, 22931, 23156, 23392, 23372, 23120, 22923, 23009, 23277, 23420, 23277, 23009, 22923, 23120, 23372, 23392, 23156, 22931, 22978, 23246, 23426, 23314, 23031, 22902, 23080, 23363, 23426, 23194, 22925, 22933, 23215, 23449, 23365, 23049, 22860, 23026, 23363, 23485, 23244, 22901, 22856, 23177, 23500, 23451, 23066, 22775, 22934, 23378, 23600, 23328, 22840, 22702, 23114, 23619, 23631, 23085, 22570, 22726, 23438, 23900, 23531, 22636, 22239, 22954, 24059, 24258, 23069, 21551, 21745, 24076, 26100, 24707, 16452, 0, -16452, -24707, -26100, -24076, -21745, -21551, -23069, -24258, -24059, -22954, -22239, -22636, -23531, -23900, -23438, -22726, -22570, -23085, -23631, -23619, -23114, -22702, -22840, -23328, -23600, -23378, -22934, -22775, -23066, -23451, -23500, -23177, -22856, -22901, -23244, -23485, -23363, -23026, -22860, -23049, -23365, -23449, -23215, -22933, -22925, -23194, -23426, -23363, -23080, -22902, -23031, -23314, -23426, -23246, -22978, -22931, -23156, -23392, -23372, -23120, -22923, -23009, -23277, -23420, -23277, -23009, -22923, -23120, -23372, -23392, -23156, -22931, -22978, -23246, -23426, -23314, -23031, -22902, -23080, -23363, -23426, -23194, -22925, -22933, -23215, -23449, -23365, -23049, -22860, -23026, -23363, -23485, -23244, -22901, -22856, -23177, -23500, -23451, -23066, -22775, -22934, -23378, -23600, -23328, -22840, -22702, -23114, -23619, -23631, -23085, -22570, -22726, -23438, -23900, -23531, -22636, -22239, -22954, -24059, -24258, -23069, -21551, -21745, -24076, -26100, -24707, -16452},
    {0, 14086, 22815, 25991, 25712, 23718, 21809, 21384, 22402, 23730, 24348, 23985, 23053, 22319, 22335, 22990, 23687, 23902, 23534, 22911, 22536, 22689, 23202, 23639, 23677, 23316, 22857, 22670, 22889, 23312, 23595, 23528, 23181, 22836, 22770, 23025, 23380, 23551, 23414, 23085, 22831, 22855, 23129, 23424, 23506, 23319, 23014, 22838, 22932, 23214, 23451, 23459, 23234, 22958, 22854, 23007, 23286, 23467, 23407, 23155, 22914, 22880, 23080, 23350, 23472, 23350, 23080, 22880, 22914, 23155, 23407, 23467, 23286, 23007, 22854, 22958, 23234, 23459, 23451, 23214, 22932, 22838, 23014, 23319, 23506, 23424, 23129, 22855, 22831, 23085, 23414, 23551, 23380, 23025, 22770, 22836, 23181, 23528, 23595, 23312, 22889, 22670, 22857, 23316, 23677, 23639, 23202, 22689, 22536, 22911, 23534, 23902, 23687, 22990, 22335, 22319, 23053, 23985, 24348, 23730, 22402, 21384, 21809, 23718, 25712, 25991, 22815, 14086, 0, -14086, -22815, -25991, -25712, -23718, -21809, -21384, -22402, -23730, -24348, -23985, -23053, -22319, -22335, -22990, -23687, -23902, -23534, -22911, -22536, -22689, -23202, -23639, -23677, -23316, -22857, -22670, -22889, -23312, -23595, -23528, -23181, -22836, -22770, -23025, -23380, -23551, -23414, -23085, -22831, -22855, -23129, -23424, -23506, -23319, -23014, -22838, -22932, -23214, -23451, -23459, -23234, -22958, -22854, -23007, -23286, -23467, -23407, -23155, -22914, -22880, -23080, -23350, -23472, -23350, -23080, -22880, -22914, -23155, -23407, -23467, -23286, -23007, -22854, -22958, -23234, -23459, -23451, -23214, -22932, -22838, -23014, -23319, -23506, -23424, -23129, -22855, -22831, -23085, -23414, -23551, -23380, -23025, -22770, -22836, -23181, -23528, -23595, -23312, -22889, -22670, -22857, -23316, -23677, -23639, -23202, -22689, -22536, -22911, -23534, -23902, -23687, -22990, -22335, -22319, -23053, -23985, -24348, -23730, -22402, -21384, -21809, -23718, -25712, -25991, -22815, -14086},
    {0, 12138, 20742, 25046, 26192, 25379, 23599, 21951, 21322, 21858, 22997, 23990, 24359, 24028, 23259, 22514, 22216, 22491, 23115, 23693, 23919, 23707, 23205, 22712, 22512, 22703, 23144, 23564, 23731, 23570, 23188, 22808, 22653, 22804, 23156, 23495, 23632, 23499, 23180, 22862, 22731, 22859, 23161, 23456, 23575, 23458, 23175, 22892, 22775, 22890, 23165, 23434, 23544, 23435, 23172, 22908, 22798, 22907, 23168, 23425, 23530, 23425, 23170, 22912, 22805, 22912, 23170, 23425, 23530, 23425, 23168, 22907, 22798, 22908, 23172, 23435, 23544, 23434, 23165, 22890, 22775, 22892, 23175, 23458, 23575, 23456, 23161, 22859, 22731, 22862, 23180, 23499, 23632, 23495, 23156, 22804, 22653, 22808, 23188, 23570, 23731, 23564, 23144, 22703, 22512, 22712, 23205, 23707, 23919, 23693, 23115, 22491, 22216, 22514, 23259, 24028, 24359, 23990, 22997, 21858, 21322, 21951, 23599, 25379, 26192, 25046, 20742, 12138, 0, -12138, -20742, -25046, -26192, -25379, -23599, -21951, -21322, -21858, -22997, -23990, -24359, -24028, -23259, -22514, -22216, -22491, -23115, -23693, -23919, -23707, -23205, -22712, -22512, -22703, -23144, -23564, -23731, -23570, -23188, -22808, -22653, -22804, -23156, -23495, -23632, -23499, -23180, -22862, -22731, -22859, -23161, -23456, -23575, -23458, -23175, -22892, -22775, -22890, -23165, -23434, -23544, -23435, -23172, -22908, -22798, -22907, -23168, -23425, -23530, -23425, -23170, -22912, -22805, -22912, -23170, -23425, -23530, -23425, -23168, -22907, -22798, -22908, -23172, -23435, -23544, -23434, -23165, -22890, -22775, -22892, -23175, -23458, -23575, -23456, -23161, -22859, -22731, -22862, -23180, -23499, -23632, -23495, -23156, -22804, -22653, -22808, -23188, -23570, -23731, -23564, -23144, -22703, -22512, -22712, -23205, -23707, -23919, -23693, -23115, -22491, -22216, -22514, -23259, -24028, -24359, -23990, -22997, -21858, -21322, -21951, -23599, -25379, -26192, -25046, -20742, -12138},
    {0, 10056, 18044, 23105, 25577, 26191, 25557, 24194, 22687, 21616, 21325, 21794, 22698, 23618, 24222, 24355, 24034, 23417, 22753, 22300, 22221, 22515, 23031, 23548, 23876, 23912, 23665, 23239, 22805, 22532, 22521, 22762, 23145, 23514, 23730, 23721, 23501, 23158, 22828, 22640, 22665, 22886, 23208, 23502, 23656, 23619, 23408, 23106, 22832, 22694, 22746, 22963, 23255, 23505, 23621, 23559, 23345, 23062, 22821, 22717, 22794, 23017, 23297, 23524, 23610, 23524, 23297, 23017, 22794, 22717, 22821, 23062, 23345, 23559, 23621, 23505, 23255, 22963, 22746, 22694, 22832, 23106, 23408, 23619, 23656, 23502, 23208, 22886, 22665, 22640, 22828, 23158, 23501, 23721, 23730, 23514, 23145, 22762, 22521, 22532, 22805, 23239, 23665, 23912, 23876, 23548, 23031, 22515, 22221, 22300, 22753, 23417, 24034, 24355, 24222, 23618, 22698, 21794, 21325, 21616, 22687, 24194, 25557, 26191, 25577, 23105, 18044, 10056, 0, -10056, -18044, -23105, -25577, -26191, -25557, -24194, -22687, -21616, -21325, -21794, -22698, -23618, -24222, -24355, -24034, -23417, -22753, -22300, -22221, -22515, -23031, -23548, -23876, -23912, -23665, -23239, -22805, -22532, -22521, -22762, -23145, -23514, -23730, -23721, -23501, -23158, -22828, -22640, -22665, -22886, -23208, -23502, -23656, -23619, -23408, -23106, -22832, -22694, -22746, -22963, -23255, -23505, -23621, -23559, -23345, -23062, -22821, -22717, -22794, -23017, -23297, -23524, -23610, -23524, -23297, -23017, -22794, -22717, -22821, -23062, -23345, -23559, -23621, -23505, -23255, -22963, -22746, -22694, -22832, -23106, -23408, -23619, -23656, -23502, -23208, -22886, -22665, -22640, -22828, -23158, -23501, -23721, -23730, -23514, -23145, -22762, -22521, -22532, -22805, -23239, -23665, -23912, -23876, -23548, -23031, -22515, -22221, -22300, -22753, -23417, -24034, -24355, -24222, -23618, -22698, -21794, -21325, -21616, -22687, -24194, -25557, -26191, -25577, -23105, -18044, -10056},
    {0, 8602, 15888, 21132, 24325, 25861, 26183, 25641, 24545, 23242, 22105, 21429, 21346, 21788, 22547, 23360, 24004, 24342, 24327, 24001, 23471, 22890, 22423, 22198, 22262, 22577, 23031, 23486, 23820, 23953, 23863, 23586, 23202, 22821, 22551, 22467, 22585, 22862, 23212, 23532, 23738, 23778, 23648, 23386, 23067, 22781, 22611, 22603, 22756, 23023, 23322, 23570, 23700, 23679, 23515, 23254, 22968, 22740, 22635, 22684, 22872, 23142, 23415, 23615, 23689, 23615, 23415, 23142, 22872, 22684, 22635, 22740, 22968, 23254, 23515, 23679, 23700, 23570, 23322, 23023, 22756, 22603, 22611, 22781, 23067, 23386, 23648, 23778, 23738, 23532, 23212, 22862, 22585, 22467, 22551, 22821, 23202, 23586, 23863, 23953, 23820, 23486, 23031, 22577, 22262, 22198, 22423, 22890, 23471, 24001, 24327, 24342, 24005, 23360, 22547, 21788, 21346, 21429, 22105, 23242, 24545, 25641, 26183, 25861, 24325, 21132, 15888, 8602, 0, -8602, -15888, -21132, -24325, -25861, -26183, -25641, -24545, -23242, -22105, -21429, -21346, -21788, -22547, -23360, -24004, -24342, -24327, -24001, -23471, -22890, -22423, -22198, -22262, -22577, -23031, -23486, -23820, -23953, -23863, -23586, -23202, -22821, -22551, -22467, -22585, -22862, -23212, -23532, -23738, -23778, -23648, -23386, -23067, -22781, -22611, -22603, -22756, -23023, -23322, -23570, -23700, -23679, -23515, -23254, -22968, -22740, -22635, -22684, -22872, -23142, -23415, -23615, -23689, -23615, -23415, -23142, -22872, -22684, -22635, -22740, -22968, -23254, -23515, -23679, -23700, -23570, -23322, -23023, -22756, -22603, -22611, -22781, -23067, -23386, -23648, -23778, -23738, -23532, -23212, -22862, -22585, -22467, -22551, -22821, -23202, -23586, -23863, -23953, -23820, -23486, -23031, -22577, -22262, -22198, -22423, -22890, -23471, -24001, -24327, -24342, -24004, -23360, -22547, -21788, -21346, -21429, -22105, -23242, -24545, -25641, -26183, -25861, -24325, -21132, -15888, -8602},
    {0, 7858, 14705, 19917, 23382, 25340, 26137, 26072, 25385, 24313, 23125, 22101, 21462, 21312, 21621, 22248, 23000, 23689, 24174, 24380, 24296, 23964, 23472, 22936, 22485, 22219, 22194, 22400, 22770, 23206, 23602, 23873, 23968, 23876, 23625, 23276, 22911, 22616, 22460, 22478, 22657, 22950, 23281, 23572, 23759, 23805, 23702, 23477, 23182, 22886, 22660, 22557, 22601, 22780, 23046, 23334, 23578, 23722, 23736, 23617, 23393, 23115, 22847, 22654, 22584, 22654, 22847, 23115, 23393, 23617, 23736, 23722, 23578, 23334, 23046, 22780, 22601, 22557, 22660, 22886, 23182, 23477, 23702, 23805, 23759, 23572, 23281, 22950, 22657, 22478, 22460, 22616, 22911, 23276, 23625, 23876, 23968, 23873, 23602, 23206, 22770, 22400, 22194, 22219, 22485, 22936, 23472, 23964, 24296, 24380, 24174, 23689, 23000, 22248, 21621, 21312, 21462, 22101, 23125, 24313, 25385, 26072, 26137, 25340, 23382, 19917, 14705, 7858, 0, -7858, -14705, -19917, -23382, -25340, -26137, -26072, -25385, -24313, -23125, -22101, -21462, -21312, -21621, -22248, -23000, -23689, -24174, -24380, -24296, -23964, -23472, -22936, -22485, -22219, -22194, -22400, -22770, -23206, -23602, -23873, -23968, -23876, -23625, -23276, -22911, -22616, -22460, -22478, -22657, -22950, -23281, -23572, -23759, -23805, -23702, -23477, -23182, -22886, -22660, -22557, -22601, -22780, -23046, -23334, -23578, -23722, -23736, -23617, -23393, -23115, -22847, -22654, -22584, -22654, -22847, -23115, -23393, -23617, -23736, -23722, -23578, -23334, -23046, -22780, -22601, -22557, -22660, -22886, -23182, -23477, -23702, -23805, -23759, -23572, -23281, -22950, -22657, -22478, -22460, -22616, -22911, -23276, -23625, -23876, -23968, -23873, -23602, -23206, -22770, -22400, -22194, -22219, -22485, -22936, -23472, -23964, -24296, -24380, -24174, -23689, -23000, -22248, -21621, -21312, -21462, -22101, -23125, -24313, -25385, -26072, -26137, -25340, -23382, -19917, -14705, -7858},
    {0, 6338, 12139, 17004, 20748, 23386, 25058, 25943, 26207, 25984, 25390, 24547, 23593, 22673, 21924, 21444, 21283, 21432, 21832, 22390, 23003, 23575, 24029, 24315, 24412, 24320, 24065, 23689, 23252, 22819, 22456, 22217, 22135, 22215, 22436, 22757, 23123, 23476, 23765, 23953, 24018, 23954, 23776, 23510, 23196, 22882, 22616, 22439, 22377, 22438, 22610, 22863, 23155, 23442, 23681, 23838, 23893, 23838, 23684, 23451, 23174, 22894, 22655, 22494, 22437, 22494, 22655, 22894, 23174, 23451, 23684, 23838, 23893, 23838, 23681, 23442, 23155, 22863, 22610, 22438, 22377, 22439, 22616, 22882, 23196, 23510, 23776, 23954, 24018, 23953, 23765, 23476, 23123, 22757, 22436, 22215, 22135, 22217, 22456, 22819, 23252, 23689, 24065, 24320, 24412, 24315, 24029, 23575, 23003, 22390, 21832, 21432, 21283, 21444, 21924, 22673, 23593, 24547, 25390, 25984, 26207, 25943, 25058, 23386, 20748, 17004, 12139, 6338, 0, -6338, -12139, -17004, -20748, -23386, -25058, -25943, -26207, -25984, -25390, -24547, -23593, -22673, -21924, -21444, -21283, -21432, -21832, -22390, -23003, -23575, -24029, -24315, -24412, -24320, -24065, -23689, -23252, -22819, -22456, -22217, -22135, -22215, -22436, -22757, -23123, -23476, -23765, -23953, -24018, -23954, -23776, -23510, -23196, -22882, -22616, -22439, -22377, -22438, -22610, -22863, -23155, -23442, -23681, -23838, -23893, -23838, -23684, -23451, -23174, -22894, -22655, -22494, -22437, -22494, -22655, -22894, -23174, -23451, -23684, -23838, -23893, -23838, -23681, -23442, -23155, -22863, -22610, -22438, -22377, -22439, -22616, -22882, -23196, -23510, -23776, -23954, -24018, -23953, -23765, -23476, -23123, -22757, -22436, -22215, -22135, -22217, -22456, -22819, -23252, -23689, -24065, -24320, -24412, -24315, -24029, -23575, -23003, -22390, -21832, -21432, -21283, -21444, -21924, -22673, -23593, -24547, -25390, -25984, -26207, -25943, -25058, -23386, -20748, -17004, -12139, -6338},
    {0, 5565, 10765, 15307, 19021, 21864, 23892, 25213, 25949, 26209, 26085, 25653, 24994, 24195, 23351, 22560, 21912, 21473, 21277, 21327, 21593, 22019, 22539, 23083, 23586, 23997, 24281, 24420, 24410, 24261, 23994, 23643, 23249, 22857, 22514, 22259, 22120, 22111, 22227, 22449, 22746, 23079, 23408, 23695, 23912, 24036, 24059, 23979, 23807, 23564, 23276, 22977, 22702, 22484, 22348, 22311, 22377, 22535, 22766, 23040, 23325, 23586, 23796, 23931, 23978, 23931, 23796, 23586, 23325, 23040, 22766, 22535, 22377, 22311, 22348, 22484, 22702, 22977, 23276, 23564, 23807, 23979, 24059, 24036, 23912, 23695, 23408, 23079, 22746, 22449, 22227, 22111, 22120, 22259, 22514, 22857, 23249, 23643, 23994, 24261, 24410, 24420, 24281, 23997, 23586, 23083, 22539, 22019, 21593, 21327, 21277, 21473, 21912, 22560, 23351, 24195, 24994, 25653, 26085, 26209, 25949, 25213, 23892, 21864, 19021, 15307, 10765, 5565, 0, -5565, -10765, -15307, -19021, -21864, -23892, -25213, -25949, -26209, -26085, -25653, -24994, -24195, -23351, -22560, -21912, -21473, -21277, -21327, -21593, -22019, -22539, -23083, -23586, -23997, -24281, -24420, -24410, -24261, -23994, -23643, -23249, -22857, -22514, -22259, -22120, -22111, -22227, -22449, -22746, -23079, -23408, -23695, -23912, -24036, -24059, -23979, -23807, -23564, -23276, -22977, -22702, -22484, -22348, -22311, -22377, -22535, -22766, -23040, -23325, -23586, -23796, -23931, -23978, -23931, -23796, -23586, -23325, -23040, -22766, -22535, -22377, -22311, -22348, -22484, -22702, -22977, -23276, -23564, -23807, -23979, -24059, -24036, -23912, -23695, -23408, -23079, -22746, -22449, -22227, -22111, -22120, -22259, -22514, -22857, -23249, -23643, -23994, -24261, -24410, -24420, -24281, -23997, -23586, -23083, -22539, -22019, -21593, -21327, -21277, -21473, -21912, -22560, -23351, -24195, -24994, -25653, -26085, -26209, -25949, -25213, -23892, -21864, -19021, -15307, -10765, -5565},
    {0, 4785, 9336, 13456, 17008, 19925, 22207, 23898, 25071, 25801, 26159, 26208, 25998, 25579, 24999, 24315, 23587, 22877, 22246, 21743, 21406, 21252, 21281, 21476, 21804, 22225, 22694, 23166, 23602, 23969, 24244, 24413, 24470, 24415, 24259, 24016, 23708, 23362, 23007, 22673, 22389, 22180, 22063, 22046, 22128, 22299, 22540, 22827, 23135, 23435, 23703, 23919, 24066, 24135, 24121, 24027, 23861, 23635, 23369, 23084, 22805, 22556, 22360, 22234, 22191, 22234, 22360, 22556, 22805, 23084, 23369, 23635, 23861, 24027, 24121, 24135, 24066, 23919, 23703, 23435, 23135, 22827, 22540, 22299, 22128, 22046, 22063, 22180, 22389, 22673, 23007, 23362, 23708, 24016, 24259, 24415, 24470, 24413, 24244, 23969, 23602, 23166, 22694, 22225, 21804, 21476, 21281, 21252, 21406, 21743, 22246, 22877, 23587, 24315, 24999, 25579, 25998, 26208, 26159, 25801, 25071, 23898, 22207, 19925, 17008, 13456, 9336, 4785, 0, -4785, -9336, -13456, -17008, -19925, -22207, -23898, -25071, -25801, -26159, -26208, -25998, -25579, -24999, -24315, -23587, -22877, -22246, -21743, -21406, -21252, -21281, -21476, -21804, -22225, -22694, -23166, -23602, -23969, -24244, -24413, -24470, -24415, -24259, -24016, -23708, -23362, -23007, -22673, -22389, -22180, -22063, -22046, -22128, -22299, -22540, -22827, -23135, -23435, -23703, -23919, -24066, -24135, -24121, -24027, -23861, -23635, -23369, -23084, -22805, -22556, -22360, -22234, -22191, -22234, -22360, -22556, -22805, -23084, -23369, -23635, -23861, -24027, -24121, -24135, -24066, -23919, -23703, -23435, -23135, -22827, -22540, -22299, -22128, -22046, -22063, -22180, -22389, -22673, -23007, -23362, -23708, -24016, -24259, -24415, -24470, -24413, -24244, -23969, -23602, -23166, -22694, -22225, -21804, -21476, -21281, -21252, -21406, -21743, -22246, -22877, -23587, -24315, -24999, -25579, -25998, -26208, -26159, -25801, -25071, -23898, -22207, -19925, -17008, -13456, -9336, -4785},
    {0, 3997, 7859, 11461, 14710, 17542, 19931, 21877, 23406, 24556, 25373, 25899, 26175, 26235, 26109, 25825, 25412, 24898, 24316, 23703, 23095, 22528, 22034, 21641, 21367, 21223, 21210, 21320, 21538, 21843, 22209, 22610, 23019, 23412, 23766, 24066, 24297, 24451, 24525, 24517, 24431, 24273, 24054, 23786, 23485, 23168, 22855, 22564, 22313, 22118, 21990, 21936, 21959, 22056, 22219, 22438, 22696, 22978, 23266, 23543, 23792, 24001, 24157, 24255, 24288, 24255, 24157, 24001, 23792, 23543, 23266, 22978, 22696, 22438, 22219, 22056, 21959, 21936, 21990, 22118, 22313, 22564, 22855, 23168, 23485, 23786, 24054, 24273, 24431, 24517, 24525, 24451, 24297, 24066, 23766, 23412, 23019, 22610, 22209, 21843, 21538, 21320, 21210, 21223, 21367, 21641, 22034, 22528, 23095, 23703, 24316, 24898, 25412, 25825, 26109, 26235, 26175, 25899, 25373, 24556, 23406, 21877, 19931, 17542, 14710, 11461, 7859, 3997, 0, -3997, -7859, -11461, -14710, -17542, -19931, -21877, -23406, -24556, -25373, -25899, -26175, -26235, -26109, -25825, -25412, -24898, -24316, -23703, -23095, -22528, -22034, -21641, -21367, -21223, -21210, -21320, -21538, -21843, -22209, -22610, -23019, -23412, -23766, -24066, -24297, -24451, -24525, -24517, -24431, -24273, -24054, -23786, -23485, -23168, -22855, -22564, -22313, -22118, -21990, -21936, -21959, -22056, -22219, -22438, -22696, -22978, -23266, -23543, -23792, -24001, -24157, -24255, -24288, -24255, -24157, -24001, -23792, -23543, -23266, -22978, -22696, -22438, -22219, -22056, -21959, -21936, -21990, -22118, -22313, -22564, -22855, -23168, -23485, -23786, -24054, -24273, -24431, -24517, -24525, -24451, -24297, -24066, -23766, -23412, -23019, -22610, -22209, -21843, -21538, -21320, -21210, -21223, -21367, -21641, -22034, -22528, -23095, -23703, -24316, -24898, -25412, -25825, -26109, -26235, -26175, -25899, -25373, -24556, -23406, -21877, -19931, -17542, -14710, -11461, -7859, -3997},
    {0, 3204, 6339, 9338, 12144, 14714, 17017, 19038, 20773, 22230, 23424, 24375, 25107, 25642, 26001, 26204, 26268, 26209, 26040, 25776, 25432, 25021, 24561, 24071, 23567, 23071, 22601, 22174, 21805, 21508, 21292, 21161, 21118, 21160, 21281, 21472, 21722, 22018, 22346, 22690, 23037, 23374, 23688, 23969, 24209, 24402, 24542, 24627, 24655, 24627, 24545, 24412, 24233, 24014, 23764, 23490, 23203, 22915, 22635, 22375, 22146, 21957, 21816, 21729, 21699, 21729, 21816, 21957, 22146, 22375, 22635, 22915, 23203, 23490, 23764, 24014, 24233, 24412, 24545, 24627, 24655, 24627, 24542, 24402, 24209, 23969, 23688, 23374, 23037, 22690, 22346, 22018, 21722, 21472, 21281, 21160, 21118, 21161, 21292, 21508, 21805, 22174, 22601, 23071, 23567, 24071, 24561, 25021, 25432, 25776, 26040, 26209, 26268, 26204, 26001, 25642, 25107, 24375, 23424, 22230, 20773, 19038, 17017, 14714, 12144, 9338, 6339, 3204, 0, -3204, -6339, -9338, -12144, -14714, -17017, -19038, -20773, -22230, -23424, -24375, -25107, -25642, -26001, -26204, -26268, -26209, -26040, -25776, -25432, -25021, -24561, -24071, -23567, -23071, -22601, -22174, -21805, -21508, -21292, -21161, -21118, -21160, -21281, -21472, -21722, -22018, -22346, -22690, -23037, -23374, -23688, -23969, -24209, -24402, -24542, -24627, -24655, -24627, -24545, -24412, -24233, -24014, -23764, -23490, -23203, -22915, -22635, -22375, -22146, -21957, -21816, -21729, -21699, -21729, -21816, -21957, -22146, -22375, -22635, -22915, -23203, -23490, -23764, -24014, -24233, -24412, -24545, -24627, -24655, -24627, -24542, -24402, -24209, -23969, -23688, -23374, -23037, -22690, -22346, -22018, -21722, -21472, -21281, -21160, -21118, -21161, -21292, -21508, -21805, -22174, -22601, -23071, -23567, -24071, -24561, -25021, -25432, -25776, -26040, -26209, -26268, -26204, -26001, -25642, -25107, -24375, -23424, -22230, -20773, -19038, -17017, -14714, -12144, -9338, -6339, -3204},
    {0, 3204, 6339, 9338, 12144, 14714, 17017, 19038, 20773, 22230, 23424, 24375, 25107, 25642, 26001, 26204, 26268, 26209, 26040, 25776, 25432, 25021, 24561, 24071, 23567, 23071, 22601, 22174, 21805, 21508, 21292, 21161, 21118, 21160, 21281, 21472, 21722, 22018, 22346, 22690, 23037, 23374, 23688, 23969, 24209, 24402, 24542, 24627, 24655, 24627, 24545, 24412, 24233, 24014, 23764, 23490, 23203, 22915, 22635, 22375, 22146, 21957, 21816, 21729, 21699, 21729, 21816, 21957, 22146, 22375, 22635, 22915, 23203, 23490, 23764, 24014, 24233, 24412, 24545, 24627, 24655, 24627, 24542, 24402, 24209, 23969, 23688, 23374, 23037, 22690, 22346, 22018, 21722, 21472, 21281, 21160, 21118, 21161, 21292, 21508, 21805, 22174, 22601, 23071, 23567, 24071, 24561, 25021, 25432, 25776, 26040, 26209, 26268, 26204, 26001, 25642, 25107, 24375, 23424, 22230, 20773, 19038, 17017, 14714, 12144, 9338, 6339, 3204, 0, -3204, -6339, -9338, -12144, -14714, -17017, -19038, -20773, -22230, -23424, -24375, -25107, -25642, -26001, -26204, -26268, -26209, -26040, -25776, -25432, -25021, -24561, -24071, -23567, -23071, -22601, -22174, -21805, -21508, -21292, -21161, -21118, -21160, -21281, -21472, -21722, -22018, -22346, -22690, -23037, -23374, -23688, -23969, -24209, -24402, -24542, -24627, -24655, -24627, -24545, -24412, -24233, -24014, -23764, -23490, -23203, -22915, -22635, -22375, -22146, -21957, -21816, -21729, -21699, -21729, -21816, -21957, -22146, -22375, -22635, -22915, -23203, -23490, -23764, -24014, -24233, -24412, -24545, -24627, -24655, -24627, -24542, -24402, -24209, -23969, -23688, -23374, -23037, -22690, -22346, -22018, -21722, -21472, -21281, -21160, -21118, -21161, -21292, -21508, -21805, -22174, -22601, -23071, -23567, -24071, -24561, -25021, -25432, -25776, -26040, -26209, -26268, -26204, -26001, -25642, -25107, -24375, -23424, -22230, -20773, -19038, -17017, -14714, -12144, -9338, -6339, -3204},
    {0, 2407, 4785, 7105, 9340, 11467, 13467, 15325, 17031, 18577, 19964, 21190, 22263, 23187, 23971, 24625, 25158, 25580, 25900, 26126, 26266, 26327, 26316, 26238, 26099, 25905, 25661, 25374, 25051, 24697, 24322, 23932, 23537, 23144, 22762, 22399, 22064, 21762, 21501, 21284, 21117, 21002, 20940, 20931, 20974, 21067, 21205, 21385, 21600, 21845, 22114, 22399, 22694, 22991, 23285, 23570, 23839, 24088, 24312, 24508, 24673, 24803, 24897, 24955, 24974, 24955, 24897, 24803, 24673, 24508, 24312, 24088, 23839, 23570, 23285, 22991, 22694, 22399, 22114, 21845, 21600, 21385, 21205, 21067, 20974, 20931, 20940, 21002, 21117, 21284, 21501, 21762, 22064, 22399, 22762, 23144, 23537, 23932, 24322, 24697, 25051, 25374, 25661, 25905, 26099, 26238, 26316, 26327, 26266, 26126, 25900, 25580, 25158, 24625, 23971, 23187, 22263, 21190, 19964, 18577, 17031, 15325, 13467, 11467, 9340, 7105, 4785, 2407, 0, -2407, -4785, -7105, -9340, -11467, -13467, -15325, -17031, -18577, -19964, -21190, -22263, -23187, -23971, -24625, -25158, -25580, -25900, -26126, -26266, -26327, -26316, -26238, -26099, -25905, -25661, -25374, -25051, -24697, -24322, -23932, -23537, -23144, -22762, -22399, -22064, -21762, -21501, -21284, -21117, -21002, -20940, -20931, -20974, -21067, -21205, -21385, -21600, -21845, -22114, -22399, -22694, -22991, -23285, -23570, -23839, -24088, -24312, -24508, -24673, -24803, -24897, -24955, -24974, -24955, -24897, -24803, -24673, -24508, -24312, -24088, -23839, -23570, -23285, -22991, -22694, -22399, -22114, -21845, -21600, -21385, -21205, -21067, -20974, -20931, -20940, -21002, -21117, -21284, -21501, -21762, -22064, -22399, -22762, -23144, -23537, -23932, -24322, -24697, -25051, -25374, -25661, -25905, -26099, -26238, -26316, -26327, -26266, -26126, -25900, -25580, -25158, -24625, -23971, -23187, -22263, -21190, -19964, -18577, -17031, -15325, -13467, -11467, -9340, -7105, -4785, -2407},
    {0, 2407, 4785, 7105, 9340, 11467, 13467, 15325, 17031, 18577, 19964, 21190, 22263, 23187, 23971, 24625, 25158, 25580, 25900, 26126, 26266, 26327, 26316, 26238, 26099, 25905, 25661, 25374, 25051, 24697, 24322, 23932, 23537, 23144, 22762, 22399, 22064, 21762, 21501, 21284, 21117, 21002, 20940, 20931, 20974, 21067, 21205, 21385, 21600, 21845, 22114, 22399, 22694, 22991, 23285, 23570, 23839, 24088, 24312, 24508, 24673, 24803, 24897, 24955, 24974, 24955, 24897, 24803, 24673, 24508, 24312, 24088, 23839, 23570, 23285, 22991, 22694, 22399, 22114, 21845, 21600, 21385, 21205, 21067, 20974, 20931, 20940, 21002, 21117, 21284, 21501, 21762, 22064, 22399, 22762, 23144, 23537, 23932, 24322, 24697, 25051, 25374, 25661, 25905, 26099, 26238, 26316, 26327, 26266, 26126, 25900, 25580, 25158, 24625, 23971, 23187, 22263, 21190, 19964, 18577, 17031, 15325, 13467, 11467, 9340, 7105, 4785, 2407, 0, -2407, -4785, -7105, -9340, -11467, -13467, -15325, -17031, -18577, -19964, -21190, -22263, -23187, -23971, -24625, -25158, -25580, -25900, -26126, -26266, -26327, -26316, -26238, -26099, -25905, -25661, -25374, -25051, -24697, -24322, -23932, -23537, -23144, -22762, -22399, -22064, -21762, -21501, -21284, -21117, -21002, -20940, -20931, -20974, -21067, -21205, -21385, -21600, -21845, -22114, -22399, -22694, -22991, -23285, -23570, -23839, -24088, -24312, -24508, -24673, -24803, -24897, -24955, -24974, -24955, -24897, -24803, -24673, -24508, -24312, -24088, -23839, -23570, -23285, -22991, -22694, -22399, -22114, -21845, -21600, -21385, -21205, -21067, -20974, -20931, -20940, -21002, -21117, -21284, -21501, -21762, -22064, -22399, -22762, -23144, -23537, -23932, -24322, -24697, -25051, -25374, -25661, -25905, -26099, -26238, -26316, -26327, -26266, -26126, -25900, -25580, -25158, -24625, -23971, -23187, -22263, -21190, -19964, -18577, -17031, -15325, -13467, -11467, -9340, -7105, -4785, -2407},
    {0, 1606, 3205, 4786, 6342, 7864, 9346, 10780, 12162, 13485, 14747, 15942, 17069, 18126, 19113, 20028, 20873, 21649, 22356, 22998, 23576, 24094, 24552, 24956, 25306, 25607, 25860, 26068, 26234, 26360, 26447, 26498, 26515, 26499, 26451, 26374, 26269, 26137, 25979, 25798, 25595, 25372, 25130, 24872, 24600, 24317, 24024, 23724, 23421, 23116, 22814, 22516, 22226, 21947, 21681, 21431, 21199, 20989, 20802, 20641, 20506, 20400, 20323, 20277, 20262, 20277, 20323, 20400, 20506, 20641, 20802, 20989, 21199, 21431, 21681, 21947, 22226, 22516, 22814, 23116, 23421, 23724, 24024, 24317, 24600, 24872, 25130, 25372, 25595, 25798, 25979, 26137, 26269, 26374, 26451, 26499, 26515, 26498, 26447, 26360, 26234, 26068, 25860, 25607, 25306, 24956, 24552, 24094, 23576, 22998, 22356, 21649, 20873, 20028, 19113, 18126, 17069, 15942, 14747, 13485, 12162, 10780, 9346, 7864, 6342, 4786, 3205, 1606, 0, -1606, -3205, -4786, -6342, -7864, -9346, -10780, -12162, -13485, -14747, -15942, -17069, -18126, -19113, -20028, -20873, -21649, -22356, -22998, -23576, -24094, -24552, -24956, -25306, -25607, -25860, -26068, -26234, -26360, -26447, -26498, -26515, -26499, -26451, -26374, -26269, -26137, -25979, -25798, -25595, -25372, -25130, -24872, -24600, -24317, -24024, -23724, -23421, -23116, -22814, -22516, -22226, -21947, -21681, -21431, -21199, -20989, -20802, -20641, -20506, -20400, -20323, -20277, -20262, -20277, -20323, -20400, -20506, -20641, -20802, -20989, -21199, -21431, -21681, -21947, -22226, -22516, -22814, -23116, -23421, -23724, -24024, -24317, -24600, -24872, -25130, -25372, -25595, -25798, -25979, -26137, -26269, -26374, -26451, -26499, -26515, -26498, -26447, -26360, -26234, -26068, -25860, -25607, -25306, -24956, -24552, -24094, -23576, -22998, -22356, -21649, -20873, -20028, -19113, -18126, -17069, -15942, -14747, -13485, -12162, -10780, -9346, -7864, -6342, -4786, -3205, -1606},
    {0, 1606, 3205, 4786, 6342, 7864, 9346, 10780, 12162, 13485, 14747, 15942, 17069, 18126, 19113, 20028, 20873, 21649, 22356, 22998, 23576, 24094, 24552, 24956, 25306, 25607, 25860, 26068, 26234, 26360, 26447, 26498, 26515, 26499, 26451, 26374, 26269, 26137, 25979, 25798, 25595, 25372, 25130, 24872, 24600, 24317, 24024, 23724, 23421, 23116, 22814, 22516, 22226, 21947, 21681, 21431, 21199, 20989, 20802, 20641, 20506, 20400, 20323, 20277, 20262, 20277, 20323, 20400, 20506, 20641, 20802, 20989, 21199, 21431, 21681, 21947, 22226, 22516, 22814, 23116, 23421, 23724, 24024, 24317, 24600, 24872, 25130, 25372, 25595, 25798, 25979, 26137, 26269, 26374, 26451, 26499, 26515, 26498, 26447, 26360, 26234, 26068, 25860, 25607, 25306, 24956, 24552, 24094, 23576, 22998, 22356, 21649, 20873, 20028, 19113, 18126, 17069, 15942, 14747, 13485, 12162, 10780, 9346, 7864, 6342, 4786, 3205, 1606, 0, -1606, -3205, -4786, -6342, -7864, -9346, -10780, -12162, -13485, -14747, -15942, -17069, -18126, -19113, -20028, -20873, -21649, -22356, -22998, -23576, -24094, -24552, -24956, -25306, -25607, -25860, -26068, -26234, -26360, -26447, -26498, -26515, -26499, -26451, -26374, -26269, -26137, -25979, -25798, -25595, -25372, -25130, -24872, -24600, -24317, -24024, -23724, -23421, -23116, -22814, -22516, -22226, -21947, -21681, -21431, -21199, -20989, -20802, -20641, -20506, -20400, -20323, -20277, -20262, -20277, -20323, -20400, -20506, -20641, -20802, -20989, -21199, -21431, -21681, -21947, -22226, -22516, -22814, -23116, -23421, -23724, -24024, -24317, -24600, -24872, -25130, -25372, -25595, -25798, -25979, -26137, -26269, -26374, -26451, -26499, -26515, -26498, -26447, -26360, -26234, -26068, -25860, -25607, -25306, -24956, -24552, -24094, -23576, -22998, -22356, -21649, -20873, -20028, -19113, -18126, -17069, -15942, -14747, -13485, -12162, -10780, -9346, -7864, -6342, -4786, -3205, -1606},
    {0, 1606, 3205, 4786, 6342, 7864, 9346, 10780, 12162, 13485, 14747, 15942, 17069, 18126, 19113, 20028, 20873, 21649, 22356, 22998, 23576, 24094, 24552, 24956, 25306, 25607, 25860, 26068, 26234, 26360, 26447, 26498, 26515, 26499, 26451, 26374, 26269, 26137, 25979, 25798, 25595, 25372, 25130, 24872, 24600, 24317, 24024, 23724, 23421, 23116, 22814, 22516, 22226, 21947, 21681, 21431, 21199, 20989, 20802, 20641, 20506, 20400, 20323, 20277, 20262, 20277, 20323, 20400, 20506, 20641, 20802, 20989, 21199, 21431, 21681, 21947, 22226, 22516, 22814, 23116, 23421, 23724, 24024, 24317, 24600, 24872, 25130, 25372, 25595, 25798, 25979, 26137, 26269, 26374, 26451, 26499, 26515, 26498, 26447, 26360, 26234, 26068, 25860, 25607, 25306, 24956, 24552, 24094, 23576, 22998, 22356, 21649, 20873, 20028, 19113, 18126, 17069, 15942, 14747, 13485, 12162, 10780, 9346, 7864, 6342, 4786, 3205, 1606, 0, -1606, -3205, -4786, -6342, -7864, -9346, -10780, -12162, -13485, -14747, -15942, -17069, -18126, -19113, -20028, -20873, -21649, -22356, -22998, -23576, -24094, -24552, -24956, -25306, -25607, -25860, -26068, -26234, -26360, -26447, -26498, -26515, -26499, -26451, -26374, -26269, -26137, -25979, -25798, -25595, -25372, -25130, -24872, -24600, -24317, -24024, -23724, -23421, -23116, -22814, -22516, -22226, -21947, -21681, -21431, -21199, -20989, -20802, -20641, -20506, -20400, -20323, -20277, -20262, -20277, -20323, -20400, -20506, -20641, -20802, -20989, -21199, -21431, -21681, -21947, -22226, -22516, -22814, -23116, -23421, -23724, -24024, -24317, -24600, -24872, -25130, -25372, -25595, -25798, -25979, -26137, -26269, -26374, -26451, -26499, -26515, -26498, -26447, -26360, -26234, -26068, -25860, -25607, -25306, -24956, -24552, -24094, -23576, -22998, -22356, -21649, -20873, -20028, -19113, -18126, -17069, -15942, -14747, -13485, -12162, -10780, -9346, -7864, -6342, -4786, -3205, -1606}
    };
    And an example how to use it, when you have a midiNote:

    Code:
    float freq = (pow(2.0, (midiNote - 69.0) / 12.0) * 440.0); //convert midinote to freq.
    int waveTable = midiNote / 3; //uses array 0 for midinote 0-2, array 1 for midinote 3-5, array 2 for midinote 6-8 and so on.
    oscillator.arbitraryWaveform(squareTable[waveTable], 172.0); //172 is just a dummy number
    oscillator.begin(WAVEFORM_ARBITRARY);
    oscillator.frequency(freq);

  2. #2
    Junior Member
    Join Date
    Nov 2018
    Posts
    6
    Did normalize the Array to max amplitude and support for the whole range of midi note frequencies (0-127)

    Code:
    const int16_t squareTable[43][256] = {
    {0, 32767, 32599, 32509, 32653, 32556, 32571, 32620, 32551, 32595, 32598, 32560, 32603, 32581, 32571, 32603, 32571, 32584, 32596, 32570, 32592, 32588, 32572, 32596, 32579, 32579, 32595, 32575, 32586, 32591, 32574, 32591, 32584, 32577, 32594, 32578, 32582, 32592, 32575, 32588, 32588, 32577, 32591, 32582, 32579, 32592, 32578, 32585, 32589, 32577, 32588, 32585, 32578, 32591, 32581, 32582, 32591, 32578, 32586, 32588, 32578, 32589, 32584, 32579, 32591, 32579, 32584, 32589, 32578, 32588, 32586, 32578, 32591, 32582, 32581, 32591, 32578, 32585, 32589, 32577, 32589, 32585, 32578, 32592, 32579, 32582, 32591, 32577, 32586, 32588, 32577, 32592, 32582, 32578, 32594, 32577, 32584, 32591, 32574, 32591, 32586, 32575, 32595, 32579, 32579, 32596, 32572, 32588, 32592, 32570, 32596, 32584, 32571, 32603, 32571, 32581, 32603, 32560, 32598, 32595, 32551, 32620, 32571, 32556, 32653, 32509, 32599, 32767, -4, -32767, -32599, -32509, -32653, -32556, -32571, -32620, -32551, -32595, -32598, -32560, -32603, -32581, -32571, -32603, -32571, -32584, -32596, -32570, -32592, -32588, -32572, -32596, -32579, -32579, -32595, -32575, -32586, -32591, -32574, -32591, -32584, -32577, -32594, -32578, -32582, -32592, -32575, -32588, -32586, -32577, -32591, -32582, -32579, -32592, -32578, -32585, -32589, -32577, -32589, -32585, -32578, -32591, -32581, -32582, -32591, -32578, -32586, -32588, -32578, -32589, -32584, -32579, -32591, -32579, -32584, -32589, -32577, -32588, -32586, -32578, -32591, -32582, -32581, -32591, -32578, -32585, -32589, -32577, -32589, -32585, -32578, -32592, -32579, -32582, -32591, -32577, -32588, -32588, -32575, -32592, -32582, -32578, -32594, -32577, -32584, -32591, -32574, -32591, -32586, -32575, -32595, -32579, -32579, -32596, -32572, -32588, -32592, -32570, -32596, -32584, -32571, -32603, -32571, -32581, -32603, -32560, -32598, -32595, -32551, -32620, -32571, -32556, -32651, -32509, -32599, -32767},
    {0, 32455, 32685, 32762, 32767, 32730, 32683, 32649, 32642, 32658, 32683, 32706, 32711, 32702, 32683, 32668, 32662, 32669, 32683, 32696, 32700, 32695, 32683, 32673, 32669, 32673, 32683, 32693, 32696, 32692, 32683, 32675, 32672, 32676, 32683, 32692, 32695, 32690, 32683, 32676, 32673, 32676, 32683, 32690, 32693, 32690, 32683, 32678, 32675, 32678, 32683, 32690, 32692, 32689, 32683, 32678, 32675, 32678, 32683, 32689, 32692, 32689, 32683, 32678, 32676, 32678, 32683, 32689, 32692, 32689, 32683, 32678, 32675, 32678, 32683, 32689, 32692, 32690, 32683, 32678, 32675, 32678, 32683, 32690, 32693, 32690, 32683, 32676, 32673, 32676, 32683, 32690, 32695, 32692, 32683, 32676, 32672, 32675, 32683, 32693, 32696, 32693, 32683, 32673, 32669, 32673, 32683, 32696, 32700, 32696, 32683, 32669, 32662, 32668, 32683, 32702, 32711, 32706, 32683, 32658, 32642, 32649, 32683, 32730, 32767, 32762, 32685, 32455, -2, -32455, -32685, -32762, -32767, -32730, -32683, -32649, -32642, -32658, -32683, -32706, -32711, -32702, -32683, -32668, -32662, -32669, -32683, -32696, -32700, -32696, -32683, -32673, -32669, -32673, -32683, -32693, -32696, -32692, -32683, -32675, -32672, -32676, -32683, -32692, -32695, -32690, -32683, -32676, -32673, -32676, -32683, -32690, -32693, -32690, -32683, -32678, -32675, -32678, -32683, -32690, -32692, -32689, -32683, -32678, -32675, -32678, -32683, -32689, -32692, -32689, -32683, -32678, -32676, -32678, -32683, -32689, -32692, -32689, -32683, -32678, -32675, -32678, -32683, -32690, -32692, -32690, -32683, -32678, -32675, -32678, -32683, -32690, -32693, -32690, -32683, -32676, -32673, -32676, -32683, -32690, -32695, -32692, -32683, -32676, -32672, -32675, -32683, -32693, -32696, -32693, -32683, -32673, -32669, -32673, -32683, -32695, -32700, -32696, -32683, -32669, -32662, -32668, -32683, -32702, -32711, -32706, -32683, -32658, -32642, -32649, -32683, -32730, -32767, -32762, -32685, -32455},
    {0, 32767, 32483, 32394, 32583, 32430, 32485, 32524, 32436, 32516, 32485, 32459, 32518, 32464, 32485, 32504, 32459, 32502, 32485, 32471, 32506, 32471, 32485, 32497, 32468, 32497, 32485, 32473, 32500, 32475, 32485, 32494, 32472, 32494, 32485, 32476, 32497, 32476, 32485, 32493, 32473, 32493, 32485, 32478, 32496, 32478, 32485, 32493, 32475, 32492, 32485, 32478, 32494, 32478, 32485, 32492, 32475, 32492, 32485, 32478, 32494, 32478, 32485, 32492, 32475, 32492, 32485, 32478, 32494, 32478, 32485, 32492, 32475, 32492, 32485, 32478, 32494, 32478, 32485, 32492, 32475, 32493, 32485, 32478, 32496, 32478, 32485, 32493, 32473, 32493, 32485, 32476, 32497, 32476, 32485, 32494, 32472, 32494, 32485, 32475, 32500, 32473, 32485, 32497, 32468, 32497, 32485, 32471, 32506, 32471, 32485, 32502, 32459, 32504, 32485, 32464, 32518, 32459, 32485, 32516, 32436, 32524, 32485, 32430, 32583, 32394, 32483, 32767, -2, -32767, -32483, -32394, -32583, -32430, -32485, -32524, -32436, -32516, -32485, -32459, -32518, -32464, -32485, -32504, -32459, -32502, -32485, -32471, -32506, -32471, -32485, -32497, -32468, -32497, -32485, -32473, -32500, -32475, -32485, -32494, -32472, -32494, -32485, -32476, -32497, -32476, -32485, -32493, -32473, -32493, -32485, -32478, -32496, -32478, -32485, -32493, -32475, -32492, -32485, -32478, -32494, -32478, -32485, -32492, -32475, -32492, -32485, -32478, -32494, -32478, -32485, -32492, -32475, -32492, -32485, -32478, -32494, -32478, -32485, -32492, -32475, -32492, -32485, -32478, -32494, -32478, -32485, -32492, -32475, -32493, -32485, -32478, -32496, -32478, -32485, -32493, -32473, -32493, -32485, -32476, -32497, -32476, -32485, -32494, -32472, -32494, -32485, -32475, -32500, -32473, -32485, -32497, -32468, -32497, -32485, -32471, -32506, -32471, -32485, -32502, -32459, -32504, -32485, -32464, -32518, -32459, -32485, -32516, -32436, -32524, -32485, -32430, -32583, -32394, -32483, -32767},
    {0, 32767, 32197, 32385, 32369, 32292, 32415, 32281, 32401, 32311, 32360, 32353, 32325, 32377, 32313, 32377, 32325, 32356, 32349, 32334, 32367, 32324, 32367, 32331, 32355, 32348, 32338, 32362, 32330, 32363, 32334, 32353, 32346, 32339, 32359, 32332, 32362, 32335, 32353, 32346, 32342, 32356, 32334, 32359, 32336, 32353, 32345, 32342, 32355, 32335, 32359, 32336, 32353, 32345, 32343, 32355, 32336, 32357, 32336, 32353, 32345, 32343, 32353, 32336, 32357, 32336, 32353, 32343, 32345, 32353, 32336, 32359, 32336, 32355, 32343, 32345, 32353, 32336, 32359, 32335, 32355, 32342, 32345, 32353, 32336, 32360, 32334, 32356, 32342, 32346, 32353, 32335, 32362, 32332, 32359, 32339, 32346, 32353, 32334, 32363, 32330, 32362, 32338, 32348, 32355, 32331, 32367, 32324, 32367, 32334, 32349, 32356, 32325, 32377, 32313, 32377, 32325, 32353, 32360, 32311, 32401, 32281, 32415, 32292, 32369, 32385, 32197, 32767, -2, -32767, -32197, -32385, -32369, -32292, -32415, -32281, -32401, -32311, -32360, -32353, -32325, -32377, -32313, -32377, -32325, -32356, -32349, -32334, -32367, -32324, -32367, -32331, -32355, -32348, -32338, -32362, -32330, -32363, -32334, -32353, -32346, -32339, -32359, -32332, -32362, -32335, -32353, -32346, -32342, -32356, -32334, -32359, -32336, -32353, -32345, -32342, -32355, -32335, -32359, -32336, -32353, -32345, -32343, -32355, -32336, -32357, -32336, -32353, -32345, -32343, -32353, -32336, -32357, -32336, -32353, -32343, -32345, -32353, -32336, -32359, -32336, -32355, -32343, -32345, -32353, -32336, -32359, -32335, -32355, -32342, -32345, -32353, -32336, -32360, -32334, -32356, -32342, -32346, -32353, -32335, -32362, -32332, -32359, -32339, -32346, -32353, -32334, -32363, -32330, -32362, -32338, -32348, -32355, -32331, -32367, -32324, -32367, -32334, -32349, -32356, -32325, -32377, -32313, -32377, -32325, -32353, -32360, -32311, -32401, -32281, -32415, -32292, -32369, -32385, -32197, -32767},
    {0, 32767, 32731, 32368, 32540, 32642, 32473, 32509, 32609, 32515, 32500, 32587, 32539, 32500, 32568, 32553, 32504, 32552, 32561, 32511, 32539, 32564, 32521, 32529, 32564, 32531, 32524, 32560, 32539, 32521, 32553, 32547, 32521, 32546, 32552, 32524, 32539, 32556, 32528, 32533, 32556, 32533, 32528, 32554, 32539, 32525, 32550, 32545, 32525, 32545, 32549, 32526, 32539, 32553, 32529, 32533, 32553, 32535, 32529, 32552, 32539, 32526, 32549, 32545, 32526, 32545, 32549, 32526, 32539, 32552, 32529, 32535, 32553, 32533, 32529, 32552, 32539, 32526, 32550, 32545, 32525, 32545, 32550, 32525, 32539, 32554, 32528, 32533, 32556, 32533, 32528, 32556, 32539, 32522, 32552, 32546, 32521, 32547, 32553, 32521, 32539, 32560, 32524, 32531, 32564, 32529, 32521, 32564, 32539, 32511, 32561, 32552, 32504, 32553, 32568, 32500, 32539, 32587, 32500, 32515, 32609, 32509, 32473, 32642, 32540, 32368, 32731, 32767, -1, -32767, -32731, -32368, -32540, -32642, -32473, -32509, -32609, -32515, -32500, -32587, -32539, -32500, -32568, -32553, -32504, -32552, -32561, -32511, -32539, -32564, -32521, -32529, -32564, -32531, -32524, -32560, -32539, -32521, -32553, -32547, -32521, -32546, -32552, -32522, -32539, -32556, -32528, -32533, -32556, -32533, -32528, -32554, -32539, -32525, -32550, -32545, -32525, -32545, -32550, -32526, -32539, -32553, -32529, -32533, -32553, -32535, -32529, -32552, -32539, -32526, -32549, -32545, -32526, -32545, -32549, -32526, -32539, -32552, -32529, -32535, -32553, -32533, -32529, -32553, -32539, -32526, -32550, -32545, -32525, -32545, -32550, -32525, -32539, -32554, -32528, -32533, -32556, -32533, -32528, -32556, -32539, -32522, -32552, -32546, -32521, -32547, -32553, -32521, -32539, -32560, -32524, -32531, -32564, -32529, -32521, -32564, -32539, -32511, -32561, -32552, -32504, -32553, -32568, -32500, -32539, -32587, -32500, -32515, -32609, -32509, -32473, -32642, -32540, -32368, -32731, -32767},
    {0, 32075, 32451, 32597, 32680, 32731, 32758, 32767, 32762, 32748, 32727, 32703, 32679, 32659, 32645, 32638, 32637, 32642, 32652, 32666, 32679, 32692, 32702, 32707, 32709, 32706, 32699, 32689, 32679, 32671, 32662, 32658, 32656, 32659, 32664, 32671, 32679, 32688, 32693, 32697, 32699, 32697, 32693, 32686, 32679, 32672, 32666, 32664, 32662, 32664, 32668, 32673, 32679, 32686, 32692, 32695, 32696, 32695, 32690, 32686, 32679, 32673, 32668, 32665, 32664, 32665, 32668, 32673, 32679, 32686, 32690, 32695, 32696, 32695, 32692, 32686, 32679, 32673, 32668, 32664, 32662, 32664, 32666, 32672, 32679, 32686, 32693, 32697, 32699, 32697, 32693, 32688, 32679, 32671, 32664, 32659, 32656, 32658, 32662, 32671, 32679, 32689, 32699, 32706, 32709, 32707, 32702, 32692, 32679, 32666, 32652, 32642, 32637, 32638, 32645, 32659, 32679, 32703, 32727, 32748, 32762, 32767, 32758, 32731, 32680, 32597, 32451, 32075, -1, -32075, -32451, -32597, -32680, -32731, -32758, -32767, -32762, -32748, -32727, -32703, -32679, -32659, -32645, -32638, -32637, -32642, -32652, -32666, -32679, -32692, -32702, -32707, -32709, -32706, -32699, -32689, -32679, -32671, -32662, -32658, -32656, -32659, -32664, -32671, -32679, -32688, -32693, -32697, -32699, -32697, -32693, -32686, -32679, -32672, -32666, -32664, -32662, -32664, -32668, -32673, -32679, -32686, -32692, -32695, -32696, -32695, -32690, -32686, -32679, -32673, -32668, -32665, -32664, -32665, -32668, -32673, -32679, -32686, -32690, -32695, -32696, -32695, -32692, -32686, -32679, -32673, -32668, -32664, -32662, -32664, -32666, -32672, -32679, -32686, -32693, -32697, -32699, -32697, -32693, -32688, -32679, -32671, -32664, -32659, -32656, -32658, -32662, -32671, -32679, -32689, -32699, -32706, -32709, -32707, -32702, -32692, -32679, -32666, -32652, -32642, -32637, -32638, -32645, -32659, -32679, -32703, -32727, -32748, -32762, -32767, -32758, -32731, -32680, -32597, -32451, -32075},
    {0, 32747, 32767, 32245, 32483, 32630, 32394, 32441, 32583, 32452, 32429, 32551, 32485, 32429, 32525, 32506, 32436, 32503, 32517, 32445, 32485, 32521, 32459, 32471, 32520, 32472, 32462, 32514, 32485, 32458, 32506, 32496, 32458, 32494, 32503, 32462, 32485, 32507, 32468, 32476, 32509, 32476, 32469, 32506, 32485, 32465, 32500, 32493, 32464, 32493, 32500, 32466, 32485, 32503, 32471, 32478, 32504, 32478, 32471, 32503, 32485, 32468, 32499, 32492, 32466, 32493, 32499, 32468, 32485, 32503, 32472, 32478, 32504, 32478, 32471, 32503, 32485, 32466, 32500, 32493, 32464, 32493, 32500, 32465, 32485, 32506, 32469, 32476, 32509, 32476, 32468, 32507, 32485, 32462, 32503, 32494, 32458, 32496, 32506, 32458, 32485, 32514, 32462, 32472, 32520, 32471, 32458, 32521, 32485, 32445, 32517, 32503, 32436, 32506, 32525, 32429, 32485, 32551, 32429, 32452, 32583, 32441, 32394, 32630, 32483, 32245, 32767, 32747, -1, -32747, -32767, -32245, -32483, -32630, -32394, -32441, -32583, -32452, -32429, -32551, -32485, -32429, -32525, -32506, -32436, -32503, -32517, -32445, -32485, -32521, -32458, -32471, -32520, -32472, -32462, -32514, -32485, -32458, -32506, -32496, -32458, -32494, -32503, -32462, -32485, -32507, -32468, -32476, -32509, -32476, -32469, -32506, -32485, -32465, -32500, -32493, -32464, -32493, -32500, -32466, -32485, -32503, -32471, -32478, -32504, -32478, -32471, -32503, -32485, -32468, -32499, -32492, -32466, -32493, -32499, -32468, -32485, -32503, -32471, -32478, -32504, -32478, -32471, -32503, -32485, -32466, -32500, -32493, -32464, -32493, -32500, -32465, -32485, -32506, -32469, -32476, -32509, -32476, -32468, -32507, -32485, -32462, -32503, -32494, -32458, -32496, -32506, -32458, -32485, -32514, -32462, -32472, -32520, -32471, -32459, -32521, -32485, -32445, -32517, -32503, -32436, -32506, -32525, -32429, -32485, -32551, -32429, -32452, -32583, -32441, -32394, -32630, -32483, -32245, -32767, -32747},
    {0, 32183, 32767, 32558, 32225, 32183, 32373, 32487, 32401, 32272, 32285, 32394, 32433, 32360, 32292, 32324, 32398, 32405, 32341, 32306, 32348, 32398, 32384, 32331, 32318, 32362, 32394, 32368, 32327, 32331, 32373, 32388, 32356, 32327, 32342, 32378, 32381, 32346, 32328, 32352, 32381, 32373, 32339, 32332, 32362, 32381, 32363, 32335, 32339, 32368, 32380, 32355, 32334, 32346, 32374, 32375, 32348, 32334, 32355, 32378, 32368, 32341, 32336, 32362, 32378, 32362, 32336, 32341, 32368, 32378, 32355, 32334, 32348, 32375, 32374, 32346, 32334, 32355, 32380, 32368, 32339, 32335, 32363, 32381, 32362, 32332, 32339, 32373, 32381, 32352, 32328, 32346, 32381, 32378, 32342, 32327, 32356, 32388, 32373, 32331, 32327, 32368, 32394, 32362, 32318, 32331, 32384, 32398, 32348, 32306, 32341, 32405, 32398, 32324, 32292, 32360, 32433, 32394, 32285, 32272, 32401, 32487, 32373, 32183, 32225, 32558, 32767, 32183, -1, -32183, -32767, -32558, -32225, -32183, -32373, -32487, -32401, -32272, -32285, -32394, -32433, -32360, -32292, -32324, -32398, -32405, -32341, -32306, -32348, -32398, -32384, -32331, -32318, -32362, -32394, -32368, -32327, -32331, -32373, -32388, -32356, -32327, -32342, -32378, -32381, -32346, -32328, -32352, -32381, -32373, -32339, -32332, -32362, -32381, -32363, -32335, -32339, -32368, -32380, -32355, -32334, -32346, -32374, -32375, -32348, -32334, -32355, -32378, -32368, -32341, -32336, -32362, -32378, -32362, -32336, -32341, -32368, -32378, -32355, -32334, -32348, -32375, -32374, -32346, -32334, -32355, -32380, -32368, -32339, -32335, -32363, -32381, -32362, -32332, -32339, -32373, -32381, -32352, -32328, -32346, -32381, -32378, -32342, -32327, -32356, -32388, -32373, -32331, -32327, -32368, -32394, -32362, -32318, -32331, -32384, -32398, -32348, -32306, -32341, -32405, -32398, -32324, -32292, -32360, -32433, -32394, -32285, -32272, -32401, -32487, -32373, -32183, -32225, -32558, -32767, -32183},
    {0, 32767, 32454, 31868, 32419, 32274, 32058, 32358, 32230, 32127, 32330, 32210, 32163, 32312, 32199, 32186, 32299, 32192, 32205, 32287, 32188, 32217, 32277, 32186, 32228, 32267, 32186, 32237, 32259, 32188, 32243, 32250, 32191, 32249, 32242, 32193, 32253, 32235, 32198, 32256, 32228, 32202, 32257, 32223, 32207, 32257, 32217, 32213, 32257, 32213, 32217, 32256, 32209, 32223, 32255, 32206, 32228, 32252, 32203, 32234, 32248, 32202, 32239, 32243, 32202, 32243, 32239, 32202, 32248, 32234, 32203, 32252, 32228, 32206, 32255, 32223, 32209, 32256, 32217, 32213, 32257, 32213, 32217, 32257, 32207, 32223, 32257, 32202, 32228, 32256, 32198, 32235, 32253, 32193, 32242, 32249, 32191, 32250, 32243, 32188, 32259, 32237, 32186, 32267, 32228, 32186, 32277, 32218, 32188, 32287, 32205, 32192, 32299, 32186, 32199, 32312, 32163, 32210, 32330, 32127, 32230, 32358, 32058, 32274, 32419, 31868, 32454, 32767, 0, -32767, -32454, -31868, -32419, -32274, -32058, -32358, -32230, -32127, -32330, -32210, -32163, -32312, -32199, -32186, -32299, -32192, -32205, -32287, -32188, -32218, -32277, -32186, -32228, -32267, -32186, -32237, -32259, -32188, -32243, -32250, -32191, -32249, -32242, -32193, -32253, -32235, -32198, -32256, -32228, -32202, -32257, -32223, -32207, -32257, -32217, -32213, -32257, -32213, -32217, -32256, -32209, -32223, -32255, -32206, -32228, -32252, -32203, -32234, -32248, -32202, -32239, -32243, -32202, -32243, -32239, -32202, -32248, -32234, -32203, -32252, -32228, -32206, -32255, -32223, -32209, -32256, -32217, -32213, -32257, -32213, -32217, -32257, -32207, -32223, -32257, -32202, -32228, -32256, -32198, -32235, -32253, -32193, -32242, -32249, -32191, -32250, -32243, -32188, -32259, -32237, -32186, -32267, -32228, -32186, -32277, -32218, -32188, -32287, -32205, -32192, -32299, -32186, -32199, -32312, -32163, -32210, -32330, -32127, -32230, -32358, -32058, -32274, -32419, -31867, -32454, -32767},
    {0, 31394, 32074, 32317, 32448, 32534, 32596, 32644, 32679, 32709, 32730, 32747, 32758, 32764, 32767, 32767, 32762, 32757, 32748, 32738, 32727, 32714, 32702, 32690, 32678, 32666, 32656, 32648, 32642, 32637, 32634, 32633, 32633, 32634, 32638, 32642, 32648, 32655, 32662, 32671, 32678, 32686, 32693, 32699, 32704, 32709, 32711, 32713, 32713, 32711, 32710, 32706, 32702, 32697, 32690, 32685, 32678, 32672, 32665, 32659, 32655, 32651, 32648, 32647, 32645, 32647, 32648, 32651, 32655, 32659, 32665, 32672, 32678, 32685, 32690, 32696, 32702, 32706, 32710, 32711, 32713, 32713, 32711, 32709, 32704, 32699, 32693, 32686, 32678, 32671, 32662, 32655, 32648, 32642, 32638, 32634, 32633, 32633, 32634, 32637, 32642, 32648, 32656, 32666, 32678, 32690, 32702, 32714, 32727, 32738, 32748, 32757, 32762, 32767, 32767, 32764, 32758, 32747, 32730, 32709, 32679, 32644, 32596, 32534, 32448, 32317, 32074, 31394, 0, -31394, -32074, -32317, -32448, -32534, -32596, -32644, -32679, -32709, -32730, -32747, -32758, -32764, -32767, -32767, -32762, -32757, -32748, -32738, -32727, -32714, -32702, -32690, -32678, -32666, -32656, -32648, -32642, -32637, -32634, -32633, -32633, -32634, -32638, -32642, -32648, -32655, -32662, -32671, -32678, -32686, -32693, -32699, -32704, -32709, -32711, -32713, -32713, -32711, -32710, -32706, -32702, -32697, -32690, -32685, -32678, -32672, -32665, -32659, -32655, -32651, -32648, -32647, -32645, -32647, -32648, -32651, -32655, -32659, -32665, -32672, -32678, -32685, -32690, -32697, -32702, -32706, -32710, -32711, -32713, -32713, -32711, -32709, -32704, -32699, -32693, -32686, -32678, -32671, -32662, -32655, -32648, -32642, -32638, -32634, -32633, -32633, -32634, -32637, -32642, -32648, -32656, -32666, -32678, -32690, -32702, -32714, -32727, -32738, -32748, -32757, -32762, -32767, -32767, -32764, -32758, -32747, -32730, -32709, -32679, -32644, -32596, -32534, -32448, -32317, -32074, -31394},
    {0, 32767, 32085, 31328, 32104, 31883, 31593, 32012, 31827, 31687, 31971, 31799, 31738, 31946, 31786, 31771, 31927, 31776, 31795, 31911, 31772, 31814, 31896, 31771, 31828, 31883, 31771, 31841, 31871, 31772, 31850, 31858, 31776, 31857, 31847, 31780, 31863, 31838, 31786, 31867, 31828, 31791, 31869, 31820, 31798, 31869, 31813, 31806, 31869, 31806, 31813, 31867, 31801, 31821, 31864, 31797, 31828, 31860, 31794, 31836, 31856, 31791, 31843, 31849, 31791, 31849, 31843, 31791, 31856, 31836, 31794, 31860, 31828, 31797, 31864, 31821, 31801, 31867, 31813, 31806, 31869, 31806, 31813, 31869, 31798, 31820, 31869, 31791, 31828, 31867, 31786, 31838, 31863, 31780, 31847, 31857, 31776, 31858, 31850, 31772, 31871, 31841, 31771, 31883, 31828, 31771, 31896, 31814, 31772, 31911, 31795, 31776, 31927, 31771, 31786, 31946, 31738, 31799, 31971, 31687, 31827, 32012, 31593, 31883, 32104, 31328, 32085, 32767, 0, -32767, -32085, -31328, -32104, -31883, -31593, -32012, -31827, -31687, -31971, -31799, -31738, -31946, -31786, -31771, -31927, -31776, -31795, -31911, -31772, -31814, -31896, -31771, -31828, -31883, -31771, -31841, -31871, -31772, -31850, -31858, -31776, -31857, -31847, -31780, -31863, -31838, -31786, -31867, -31828, -31791, -31869, -31820, -31798, -31869, -31813, -31806, -31869, -31806, -31813, -31867, -31801, -31821, -31864, -31797, -31828, -31860, -31794, -31836, -31856, -31791, -31843, -31849, -31791, -31849, -31843, -31791, -31856, -31836, -31794, -31860, -31828, -31797, -31864, -31821, -31801, -31867, -31813, -31806, -31869, -31806, -31813, -31869, -31798, -31820, -31869, -31791, -31828, -31867, -31786, -31838, -31863, -31780, -31847, -31857, -31776, -31858, -31850, -31772, -31871, -31841, -31771, -31883, -31828, -31771, -31896, -31814, -31772, -31911, -31795, -31776, -31927, -31771, -31786, -31946, -31738, -31799, -31971, -31687, -31827, -32012, -31593, -31883, -32104, -31328, -32085, -32767},
    {0, 32767, 31425, 31247, 31970, 31206, 31714, 31580, 31387, 31752, 31401, 31597, 31610, 31425, 31680, 31473, 31550, 31621, 31448, 31638, 31515, 31525, 31623, 31469, 31606, 31544, 31510, 31620, 31486, 31583, 31564, 31501, 31613, 31504, 31563, 31579, 31497, 31605, 31520, 31545, 31589, 31499, 31594, 31535, 31531, 31594, 31503, 31582, 31550, 31520, 31597, 31510, 31568, 31564, 31512, 31595, 31519, 31555, 31576, 31508, 31591, 31530, 31542, 31584, 31507, 31584, 31542, 31530, 31591, 31508, 31576, 31555, 31519, 31595, 31512, 31564, 31568, 31510, 31597, 31520, 31550, 31582, 31503, 31594, 31531, 31535, 31594, 31499, 31589, 31545, 31520, 31605, 31497, 31579, 31563, 31504, 31613, 31501, 31564, 31583, 31486, 31620, 31510, 31544, 31606, 31469, 31623, 31525, 31515, 31638, 31448, 31621, 31550, 31473, 31680, 31425, 31610, 31597, 31401, 31752, 31387, 31580, 31714, 31206, 31970, 31247, 31425, 32767, 0, -32767, -31425, -31247, -31970, -31206, -31714, -31580, -31387, -31752, -31401, -31597, -31610, -31425, -31680, -31473, -31550, -31621, -31448, -31638, -31515, -31525, -31623, -31469, -31606, -31544, -31510, -31620, -31486, -31583, -31564, -31501, -31613, -31504, -31563, -31579, -31497, -31605, -31520, -31545, -31589, -31499, -31594, -31535, -31531, -31594, -31503, -31582, -31550, -31520, -31597, -31510, -31568, -31564, -31512, -31595, -31519, -31555, -31576, -31508, -31591, -31530, -31542, -31584, -31507, -31584, -31542, -31530, -31591, -31508, -31576, -31555, -31519, -31595, -31512, -31564, -31568, -31510, -31597, -31520, -31550, -31582, -31503, -31594, -31531, -31535, -31594, -31499, -31589, -31545, -31520, -31605, -31497, -31579, -31563, -31504, -31613, -31501, -31564, -31583, -31486, -31620, -31510, -31544, -31606, -31469, -31623, -31525, -31515, -31638, -31448, -31621, -31550, -31473, -31680, -31425, -31610, -31597, -31401, -31752, -31387, -31580, -31714, -31206, -31970, -31247, -31425, -32767},
    {0, 30795, 32587, 32767, 32275, 31783, 31692, 31956, 32241, 32285, 32097, 31898, 31881, 32033, 32183, 32183, 32053, 31935, 31948, 32062, 32156, 32136, 32032, 31956, 31984, 32078, 32140, 32107, 32019, 31970, 32007, 32087, 32127, 32087, 32011, 31981, 32025, 32094, 32116, 32071, 32006, 31990, 32039, 32098, 32108, 32058, 32003, 32000, 32051, 32102, 32098, 32046, 32000, 32008, 32062, 32104, 32090, 32036, 31999, 32018, 32072, 32105, 32082, 32026, 31999, 32026, 32082, 32105, 32072, 32018, 31999, 32036, 32090, 32104, 32062, 32008, 32000, 32046, 32098, 32102, 32051, 32000, 32003, 32058, 32108, 32098, 32039, 31990, 32006, 32071, 32116, 32094, 32025, 31981, 32011, 32087, 32127, 32087, 32007, 31970, 32019, 32107, 32140, 32078, 31984, 31956, 32032, 32136, 32156, 32062, 31948, 31935, 32053, 32183, 32183, 32033, 31881, 31898, 32097, 32285, 32241, 31954, 31692, 31783, 32275, 32767, 32587, 30795, 0, -30795, -32587, -32767, -32275, -31783, -31692, -31956, -32241, -32285, -32097, -31898, -31881, -32033, -32183, -32183, -32053, -31935, -31948, -32062, -32156, -32136, -32032, -31956, -31984, -32078, -32140, -32107, -32019, -31970, -32007, -32087, -32127, -32087, -32011, -31981, -32025, -32094, -32116, -32071, -32006, -31990, -32039, -32098, -32108, -32058, -32003, -32000, -32051, -32102, -32098, -32046, -32000, -32008, -32062, -32104, -32090, -32036, -31999, -32018, -32072, -32105, -32082, -32026, -31999, -32026, -32082, -32105, -32072, -32018, -31999, -32036, -32090, -32104, -32062, -32008, -32000, -32046, -32098, -32102, -32051, -32000, -32003, -32058, -32108, -32098, -32039, -31990, -32006, -32071, -32116, -32094, -32025, -31981, -32011, -32087, -32127, -32087, -32007, -31970, -32019, -32107, -32140, -32078, -31984, -31956, -32032, -32136, -32156, -32062, -31948, -31935, -32053, -32183, -32183, -32033, -31881, -31898, -32097, -32285, -32241, -31954, -31692, -31783, -32275, -32767, -32587, -30795},
    {0, 30099, 31387, 31836, 32067, 32210, 32308, 32383, 32441, 32487, 32525, 32559, 32589, 32613, 32635, 32655, 32672, 32688, 32702, 32714, 32724, 32734, 32741, 32748, 32754, 32758, 32762, 32764, 32765, 32767, 32765, 32765, 32762, 32759, 32757, 32752, 32748, 32744, 32738, 32733, 32726, 32720, 32713, 32706, 32699, 32692, 32685, 32678, 32671, 32664, 32658, 32651, 32645, 32640, 32634, 32628, 32624, 32620, 32617, 32613, 32611, 32609, 32607, 32606, 32606, 32606, 32607, 32609, 32611, 32613, 32617, 32620, 32624, 32628, 32634, 32640, 32645, 32651, 32658, 32664, 32671, 32678, 32685, 32692, 32699, 32706, 32713, 32720, 32726, 32733, 32738, 32744, 32748, 32752, 32757, 32759, 32762, 32765, 32765, 32767, 32765, 32764, 32762, 32758, 32754, 32748, 32741, 32734, 32724, 32714, 32702, 32688, 32672, 32655, 32635, 32613, 32589, 32559, 32525, 32487, 32441, 32383, 32308, 32210, 32067, 31836, 31387, 30099, 0, -30099, -31387, -31836, -32067, -32210, -32308, -32383, -32441, -32487, -32525, -32559, -32589, -32613, -32635, -32655, -32672, -32688, -32702, -32714, -32724, -32734, -32741, -32748, -32754, -32758, -32762, -32764, -32765, -32767, -32765, -32765, -32762, -32759, -32757, -32752, -32748, -32744, -32738, -32733, -32726, -32720, -32713, -32706, -32699, -32692, -32685, -32678, -32671, -32664, -32658, -32651, -32645, -32640, -32634, -32628, -32624, -32620, -32617, -32613, -32611, -32609, -32607, -32606, -32606, -32606, -32607, -32609, -32611, -32613, -32617, -32620, -32624, -32628, -32634, -32640, -32645, -32651, -32658, -32664, -32671, -32678, -32685, -32692, -32699, -32706, -32713, -32720, -32726, -32733, -32738, -32744, -32748, -32752, -32757, -32759, -32762, -32765, -32765, -32767, -32765, -32764, -32762, -32758, -32754, -32748, -32741, -32734, -32724, -32714, -32702, -32688, -32672, -32655, -32635, -32613, -32589, -32559, -32525, -32487, -32441, -32383, -32308, -32210, -32067, -31836, -31387, -30099},
    {0, 30852, 32718, 32767, 32039, 31374, 31281, 31666, 32059, 32105, 31836, 31561, 31544, 31762, 31968, 31964, 31780, 31617, 31636, 31799, 31928, 31898, 31753, 31647, 31687, 31820, 31905, 31858, 31736, 31668, 31720, 31834, 31887, 31831, 31725, 31683, 31745, 31842, 31873, 31808, 31718, 31697, 31765, 31849, 31860, 31790, 31713, 31710, 31782, 31853, 31847, 31775, 31709, 31721, 31797, 31856, 31836, 31760, 31708, 31734, 31810, 31857, 31824, 31746, 31708, 31746, 31824, 31857, 31810, 31734, 31708, 31760, 31836, 31856, 31797, 31721, 31709, 31775, 31847, 31853, 31782, 31710, 31713, 31790, 31860, 31849, 31765, 31697, 31718, 31808, 31873, 31842, 31745, 31683, 31725, 31831, 31887, 31834, 31720, 31668, 31736, 31858, 31905, 31820, 31687, 31647, 31753, 31898, 31928, 31799, 31636, 31617, 31780, 31964, 31968, 31762, 31544, 31561, 31836, 32105, 32059, 31666, 31281, 31374, 32039, 32767, 32718, 30852, 0, -30852, -32718, -32767, -32039, -31374, -31281, -31666, -32059, -32105, -31836, -31561, -31544, -31762, -31968, -31964, -31780, -31617, -31636, -31799, -31928, -31898, -31753, -31647, -31687, -31820, -31905, -31858, -31736, -31668, -31720, -31834, -31887, -31831, -31725, -31683, -31745, -31842, -31873, -31808, -31718, -31697, -31765, -31849, -31860, -31790, -31713, -31710, -31782, -31853, -31847, -31775, -31709, -31721, -31797, -31856, -31836, -31760, -31708, -31734, -31810, -31857, -31824, -31746, -31708, -31746, -31824, -31857, -31810, -31734, -31708, -31760, -31836, -31856, -31797, -31721, -31709, -31775, -31847, -31853, -31782, -31710, -31713, -31790, -31860, -31849, -31765, -31697, -31718, -31808, -31873, -31842, -31745, -31683, -31725, -31831, -31887, -31834, -31720, -31668, -31736, -31858, -31905, -31820, -31687, -31647, -31753, -31898, -31928, -31799, -31636, -31617, -31780, -31964, -31968, -31762, -31544, -31561, -31836, -32105, -32059, -31666, -31281, -31374, -32039, -32767, -32718, -30852},
    {0, 32767, 32278, 30010, 30956, 31770, 30779, 30748, 31493, 31088, 30737, 31279, 31241, 30807, 31108, 31296, 30915, 30989, 31282, 31031, 30926, 31223, 31127, 30917, 31141, 31190, 30949, 31060, 31214, 31009, 30997, 31198, 31079, 30966, 31154, 31138, 30968, 31096, 31174, 31000, 31040, 31182, 31049, 30999, 31162, 31103, 30984, 31121, 31146, 30994, 31071, 31169, 31028, 31025, 31165, 31075, 30997, 31139, 31121, 30992, 31096, 31154, 31012, 31049, 31166, 31049, 31012, 31154, 31096, 30992, 31121, 31139, 30997, 31075, 31165, 31025, 31028, 31169, 31071, 30994, 31146, 31121, 30984, 31103, 31162, 30999, 31049, 31182, 31040, 31000, 31174, 31096, 30968, 31138, 31154, 30966, 31079, 31198, 30997, 31009, 31214, 31060, 30949, 31190, 31141, 30917, 31127, 31223, 30926, 31031, 31282, 30989, 30915, 31296, 31108, 30807, 31241, 31279, 30737, 31088, 31493, 30748, 30779, 31770, 30956, 30010, 32278, 32767, 0, -32767, -32278, -30010, -30956, -31770, -30779, -30748, -31493, -31088, -30737, -31279, -31241, -30807, -31108, -31296, -30915, -30989, -31282, -31031, -30926, -31223, -31127, -30917, -31141, -31190, -30949, -31059, -31214, -31009, -30997, -31198, -31079, -30966, -31154, -31138, -30968, -31096, -31174, -31000, -31040, -31182, -31049, -30999, -31162, -31103, -30984, -31121, -31146, -30994, -31071, -31169, -31028, -31025, -31165, -31075, -30997, -31139, -31121, -30992, -31096, -31154, -31012, -31049, -31166, -31049, -31012, -31154, -31096, -30992, -31121, -31139, -30997, -31075, -31165, -31025, -31028, -31169, -31071, -30994, -31146, -31121, -30984, -31103, -31162, -30999, -31049, -31182, -31040, -31000, -31174, -31096, -30968, -31138, -31154, -30966, -31079, -31198, -30997, -31009, -31214, -31060, -30949, -31190, -31141, -30917, -31127, -31223, -30926, -31031, -31282, -30989, -30915, -31296, -31108, -30807, -31241, -31279, -30737, -31088, -31493, -30748, -30779, -31770, -30956, -30010, -32278, -32767},
    {0, 32767, 28293, 29498, 29940, 28736, 30105, 28970, 29654, 29500, 29199, 29789, 29112, 29682, 29358, 29386, 29625, 29212, 29667, 29298, 29490, 29512, 29301, 29627, 29283, 29550, 29429, 29381, 29575, 29297, 29576, 29373, 29448, 29515, 29330, 29576, 29341, 29501, 29458, 29376, 29556, 29332, 29536, 29409, 29425, 29520, 29342, 29551, 29372, 29473, 29477, 29370, 29547, 29351, 29512, 29433, 29409, 29527, 29348, 29537, 29392, 29452, 29494, 29363, 29545, 29363, 29494, 29452, 29392, 29537, 29348, 29527, 29409, 29433, 29512, 29351, 29547, 29370, 29477, 29473, 29372, 29551, 29342, 29520, 29425, 29409, 29536, 29332, 29556, 29376, 29458, 29501, 29341, 29576, 29330, 29515, 29448, 29373, 29576, 29297, 29575, 29381, 29429, 29550, 29283, 29627, 29301, 29512, 29490, 29298, 29667, 29212, 29625, 29386, 29358, 29682, 29112, 29789, 29199, 29500, 29654, 28970, 30105, 28736, 29940, 29498, 28293, 32767, 0, -32767, -28293, -29498, -29940, -28736, -30105, -28970, -29654, -29500, -29199, -29789, -29112, -29682, -29358, -29386, -29625, -29212, -29667, -29298, -29490, -29512, -29301, -29627, -29283, -29550, -29429, -29381, -29575, -29297, -29576, -29373, -29448, -29515, -29330, -29576, -29341, -29501, -29458, -29376, -29556, -29332, -29536, -29409, -29425, -29520, -29342, -29551, -29372, -29473, -29477, -29370, -29547, -29351, -29512, -29433, -29409, -29527, -29348, -29537, -29392, -29452, -29494, -29363, -29545, -29363, -29494, -29452, -29392, -29537, -29348, -29527, -29409, -29433, -29512, -29351, -29547, -29370, -29477, -29473, -29372, -29551, -29342, -29520, -29425, -29409, -29536, -29332, -29556, -29376, -29458, -29501, -29341, -29576, -29330, -29515, -29448, -29373, -29576, -29297, -29575, -29381, -29429, -29550, -29283, -29627, -29301, -29512, -29490, -29298, -29667, -29212, -29625, -29386, -29358, -29682, -29112, -29789, -29199, -29500, -29654, -28970, -30105, -28736, -29940, -29498, -28293, -32767},
    {0, 32767, 26710, 30446, 27853, 29871, 28250, 29608, 28454, 29455, 28582, 29355, 28668, 29281, 28733, 29225, 28785, 29180, 28826, 29142, 28861, 29111, 28891, 29084, 28917, 29059, 28940, 29037, 28960, 29019, 28978, 29001, 28995, 28985, 29010, 28971, 29024, 28957, 29036, 28946, 29047, 28935, 29057, 28925, 29066, 28917, 29075, 28908, 29082, 28902, 29089, 28896, 29094, 28891, 29099, 28887, 29102, 28883, 29105, 28881, 29107, 28880, 29109, 28878, 29109, 28878, 29109, 28880, 29107, 28881, 29105, 28883, 29102, 28887, 29099, 28891, 29094, 28896, 29089, 28902, 29082, 28908, 29075, 28917, 29066, 28925, 29057, 28935, 29047, 28946, 29036, 28957, 29024, 28971, 29010, 28985, 28995, 29001, 28978, 29019, 28960, 29037, 28940, 29059, 28917, 29084, 28891, 29111, 28861, 29142, 28826, 29180, 28785, 29225, 28733, 29281, 28668, 29355, 28582, 29455, 28454, 29608, 28250, 29871, 27853, 30446, 26710, 32767, 0, -32767, -26710, -30446, -27853, -29871, -28250, -29608, -28454, -29455, -28582, -29355, -28668, -29281, -28733, -29225, -28785, -29180, -28826, -29142, -28861, -29111, -28891, -29084, -28917, -29059, -28940, -29037, -28960, -29019, -28978, -29001, -28995, -28985, -29010, -28971, -29024, -28957, -29036, -28946, -29047, -28935, -29057, -28925, -29066, -28917, -29075, -28908, -29082, -28902, -29089, -28896, -29094, -28891, -29099, -28887, -29102, -28883, -29105, -28881, -29107, -28880, -29109, -28878, -29109, -28878, -29109, -28880, -29107, -28881, -29105, -28883, -29102, -28887, -29099, -28891, -29094, -28896, -29089, -28902, -29082, -28908, -29075, -28917, -29066, -28925, -29057, -28935, -29047, -28946, -29036, -28957, -29024, -28971, -29010, -28985, -28995, -29001, -28978, -29019, -28960, -29037, -28940, -29059, -28917, -29084, -28891, -29111, -28861, -29142, -28826, -29180, -28785, -29225, -28733, -29281, -28668, -29355, -28582, -29455, -28454, -29608, -28250, -29871, -27853, -30446, -26710, -32765},
    {0, 32767, 28704, 29254, 30441, 28496, 30488, 28938, 29811, 29689, 29188, 30063, 29098, 29889, 29460, 29466, 29832, 29233, 29878, 29365, 29622, 29669, 29356, 29827, 29338, 29711, 29550, 29470, 29753, 29356, 29752, 29467, 29568, 29670, 29402, 29753, 29420, 29645, 29589, 29467, 29725, 29406, 29695, 29517, 29538, 29675, 29421, 29717, 29464, 29605, 29613, 29461, 29712, 29433, 29660, 29549, 29515, 29683, 29429, 29697, 29492, 29577, 29636, 29449, 29709, 29449, 29636, 29577, 29492, 29697, 29429, 29683, 29515, 29549, 29660, 29433, 29712, 29461, 29613, 29605, 29464, 29717, 29421, 29675, 29538, 29517, 29695, 29406, 29725, 29467, 29589, 29645, 29420, 29753, 29402, 29670, 29568, 29467, 29752, 29356, 29753, 29470, 29550, 29711, 29338, 29827, 29356, 29669, 29622, 29365, 29878, 29233, 29832, 29466, 29460, 29889, 29098, 30063, 29188, 29689, 29811, 28938, 30488, 28496, 30441, 29254, 28704, 32767, 0, -32767, -28704, -29254, -30441, -28496, -30488, -28938, -29811, -29689, -29188, -30063, -29098, -29889, -29460, -29466, -29832, -29233, -29878, -29365, -29622, -29669, -29356, -29827, -29338, -29711, -29550, -29470, -29753, -29356, -29752, -29467, -29568, -29670, -29402, -29753, -29420, -29645, -29589, -29467, -29725, -29406, -29695, -29517, -29538, -29675, -29421, -29717, -29464, -29605, -29613, -29461, -29712, -29433, -29660, -29549, -29515, -29683, -29429, -29697, -29492, -29577, -29636, -29449, -29709, -29449, -29636, -29577, -29492, -29697, -29429, -29683, -29515, -29549, -29660, -29433, -29712, -29461, -29613, -29605, -29464, -29717, -29421, -29675, -29538, -29517, -29695, -29406, -29725, -29467, -29589, -29645, -29420, -29753, -29402, -29670, -29568, -29467, -29752, -29356, -29753, -29470, -29550, -29711, -29338, -29827, -29356, -29669, -29622, -29365, -29878, -29233, -29832, -29466, -29460, -29889, -29098, -30063, -29188, -29689, -29811, -28938, -30488, -28496, -30441, -29254, -28704, -32767},
    {0, 32767, 32490, 28660, 32259, 31017, 29999, 31902, 30672, 30527, 31661, 30548, 30827, 31462, 30519, 31020, 31288, 30544, 31144, 31135, 30603, 31216, 31002, 30684, 31247, 30895, 30777, 31242, 30817, 30871, 31210, 30765, 30961, 31156, 30742, 31038, 31089, 30746, 31099, 31017, 30771, 31137, 30946, 30817, 31155, 30882, 30873, 31149, 30833, 30936, 31125, 30801, 30998, 31084, 30787, 31055, 31032, 30794, 31097, 30973, 30819, 31125, 30914, 30861, 31136, 30861, 30914, 31125, 30819, 30973, 31097, 30794, 31032, 31055, 30787, 31084, 30998, 30801, 31125, 30936, 30833, 31149, 30873, 30882, 31155, 30817, 30946, 31137, 30771, 31017, 31099, 30746, 31089, 31038, 30742, 31156, 30961, 30765, 31210, 30871, 30817, 31242, 30777, 30895, 31247, 30684, 31002, 31216, 30603, 31135, 31144, 30544, 31288, 31020, 30519, 31462, 30827, 30548, 31661, 30527, 30672, 31902, 29999, 31017, 32259, 28660, 32490, 32767, 0, -32767, -32490, -28660, -32259, -31017, -29999, -31902, -30672, -30527, -31661, -30548, -30827, -31462, -30519, -31020, -31288, -30544, -31144, -31135, -30603, -31216, -31002, -30684, -31247, -30895, -30777, -31242, -30817, -30871, -31210, -30765, -30961, -31156, -30742, -31038, -31089, -30746, -31099, -31017, -30771, -31137, -30946, -30817, -31155, -30882, -30873, -31149, -30833, -30936, -31125, -30801, -30998, -31084, -30787, -31055, -31032, -30794, -31097, -30973, -30819, -31125, -30914, -30861, -31136, -30861, -30914, -31125, -30819, -30973, -31097, -30794, -31032, -31055, -30787, -31084, -30998, -30801, -31125, -30936, -30833, -31149, -30873, -30882, -31155, -30817, -30946, -31137, -30771, -31017, -31099, -30746, -31089, -31038, -30742, -31156, -30961, -30765, -31210, -30871, -30817, -31242, -30777, -30895, -31247, -30684, -31002, -31216, -30603, -31135, -31144, -30544, -31288, -31020, -30519, -31462, -30827, -30548, -31661, -30527, -30672, -31902, -29999, -31017, -32259, -28660, -32490, -32767},
    {0, 29074, 32767, 27801, 28553, 31019, 29384, 28480, 30174, 29984, 28747, 29565, 30149, 29153, 29189, 30034, 29545, 29063, 29769, 29810, 29150, 29481, 29898, 29364, 29276, 29821, 29598, 29212, 29640, 29760, 29290, 29443, 29802, 29454, 29308, 29724, 29627, 29282, 29573, 29738, 29364, 29418, 29750, 29508, 29324, 29664, 29649, 29324, 29527, 29727, 29415, 29398, 29715, 29548, 29332, 29621, 29668, 29355, 29490, 29723, 29454, 29378, 29690, 29585, 29333, 29585, 29690, 29378, 29454, 29723, 29490, 29355, 29668, 29621, 29332, 29548, 29715, 29398, 29415, 29727, 29527, 29324, 29649, 29664, 29324, 29508, 29750, 29418, 29364, 29738, 29573, 29282, 29627, 29724, 29308, 29454, 29802, 29443, 29290, 29760, 29640, 29212, 29598, 29821, 29276, 29364, 29898, 29481, 29150, 29810, 29769, 29063, 29545, 30034, 29189, 29153, 30149, 29565, 28747, 29984, 30174, 28480, 29384, 31019, 28553, 27801, 32767, 29074, 0, -29074, -32767, -27801, -28553, -31019, -29384, -28480, -30174, -29984, -28747, -29565, -30149, -29153, -29189, -30034, -29545, -29063, -29769, -29810, -29150, -29481, -29898, -29364, -29276, -29821, -29598, -29212, -29640, -29760, -29290, -29443, -29802, -29454, -29308, -29724, -29627, -29282, -29573, -29738, -29364, -29418, -29750, -29508, -29324, -29664, -29649, -29324, -29527, -29727, -29415, -29398, -29715, -29548, -29332, -29621, -29668, -29355, -29490, -29723, -29454, -29378, -29690, -29585, -29333, -29585, -29690, -29378, -29454, -29723, -29490, -29355, -29668, -29621, -29332, -29548, -29715, -29398, -29415, -29727, -29527, -29324, -29649, -29664, -29324, -29508, -29750, -29418, -29364, -29738, -29573, -29282, -29627, -29724, -29308, -29454, -29802, -29443, -29290, -29760, -29640, -29212, -29598, -29821, -29276, -29364, -29898, -29481, -29150, -29810, -29769, -29063, -29545, -30034, -29189, -29153, -30149, -29565, -28747, -29984, -30174, -28480, -29384, -31019, -28553, -27801, -32767, -29074},
    {0, 25950, 32767, 29528, 26691, 28773, 30462, 29103, 27819, 28919, 29900, 29037, 28203, 28955, 29651, 29014, 28393, 28970, 29513, 29005, 28506, 28977, 29426, 29000, 28580, 28980, 29367, 28997, 28630, 28983, 29324, 28995, 28667, 28985, 29293, 28993, 28695, 28985, 29269, 28993, 28716, 28987, 29252, 28992, 28731, 28988, 29239, 28992, 28744, 28988, 29229, 28990, 28751, 28988, 29222, 28990, 28758, 28989, 29217, 28990, 28761, 28989, 29216, 28989, 28763, 28989, 29216, 28989, 28761, 28990, 29217, 28989, 28758, 28990, 29222, 28988, 28751, 28990, 29229, 28988, 28744, 28992, 29239, 28988, 28731, 28992, 29252, 28987, 28716, 28993, 29269, 28985, 28695, 28993, 29293, 28985, 28667, 28995, 29324, 28983, 28630, 28997, 29367, 28980, 28580, 29000, 29426, 28977, 28506, 29005, 29513, 28970, 28393, 29014, 29651, 28955, 28203, 29037, 29900, 28919, 27819, 29103, 30462, 28773, 26691, 29528, 32767, 25950, 0, -25950, -32767, -29528, -26691, -28773, -30462, -29103, -27819, -28919, -29900, -29037, -28203, -28955, -29651, -29014, -28393, -28970, -29513, -29005, -28506, -28977, -29426, -29000, -28580, -28980, -29367, -28997, -28630, -28983, -29324, -28995, -28667, -28985, -29293, -28993, -28695, -28985, -29269, -28993, -28716, -28987, -29252, -28992, -28731, -28988, -29239, -28992, -28744, -28988, -29229, -28990, -28751, -28988, -29222, -28990, -28758, -28989, -29217, -28990, -28761, -28989, -29216, -28989, -28763, -28989, -29216, -28989, -28761, -28990, -29217, -28989, -28758, -28990, -29222, -28988, -28751, -28990, -29229, -28988, -28744, -28992, -29239, -28988, -28731, -28992, -29252, -28987, -28716, -28993, -29269, -28985, -28695, -28993, -29293, -28985, -28667, -28995, -29324, -28983, -28630, -28997, -29367, -28980, -28580, -29000, -29426, -28977, -28506, -29005, -29513, -28970, -28393, -29014, -29651, -28955, -28203, -29037, -29900, -28919, -27819, -29103, -30462, -28773, -26691, -29528, -32767, -25950},
    {0, 23571, 32767, 32150, 28352, 27264, 29425, 30943, 30095, 28518, 28537, 29832, 30372, 29551, 28692, 29040, 29936, 30044, 29299, 28849, 29328, 29947, 29808, 29168, 28999, 29518, 29911, 29619, 29107, 29144, 29644, 29843, 29468, 29095, 29281, 29722, 29755, 29349, 29121, 29407, 29761, 29655, 29261, 29174, 29518, 29764, 29551, 29205, 29249, 29609, 29738, 29449, 29181, 29338, 29677, 29685, 29355, 29186, 29432, 29719, 29613, 29277, 29219, 29527, 29733, 29527, 29219, 29277, 29613, 29719, 29432, 29186, 29355, 29685, 29677, 29338, 29181, 29449, 29738, 29609, 29249, 29205, 29551, 29764, 29518, 29174, 29261, 29655, 29761, 29407, 29121, 29349, 29755, 29722, 29281, 29095, 29468, 29843, 29645, 29144, 29107, 29619, 29911, 29518, 28999, 29168, 29808, 29947, 29328, 28849, 29299, 30044, 29936, 29040, 28692, 29551, 30372, 29832, 28537, 28518, 30095, 30943, 29425, 27264, 28352, 32150, 32767, 23571, 0, -23571, -32767, -32150, -28352, -27264, -29425, -30943, -30095, -28518, -28537, -29832, -30372, -29551, -28692, -29040, -29936, -30044, -29299, -28849, -29328, -29947, -29808, -29168, -28999, -29518, -29911, -29619, -29107, -29144, -29644, -29843, -29468, -29095, -29281, -29722, -29755, -29349, -29121, -29407, -29761, -29655, -29261, -29174, -29518, -29764, -29551, -29205, -29249, -29609, -29738, -29449, -29181, -29338, -29677, -29685, -29355, -29186, -29432, -29719, -29613, -29277, -29219, -29527, -29733, -29527, -29219, -29277, -29613, -29719, -29432, -29186, -29355, -29685, -29677, -29338, -29181, -29449, -29738, -29609, -29249, -29205, -29551, -29764, -29518, -29174, -29261, -29655, -29761, -29407, -29121, -29349, -29755, -29722, -29281, -29095, -29468, -29843, -29644, -29144, -29107, -29619, -29911, -29518, -28999, -29168, -29808, -29947, -29328, -28849, -29299, -30044, -29936, -29040, -28692, -29551, -30372, -29832, -28537, -28518, -30095, -30943, -29425, -27264, -28352, -32150, -32767, -23571},
    {0, 20654, 31018, 32767, 30225, 27299, 27056, 28961, 30454, 30204, 28817, 27919, 28418, 29541, 30005, 29425, 28531, 28335, 28981, 29667, 29652, 29018, 28501, 28674, 29286, 29628, 29349, 28792, 28592, 28957, 29441, 29502, 29097, 28694, 28750, 29181, 29484, 29330, 28907, 28699, 28936, 29333, 29438, 29145, 28791, 28780, 29118, 29409, 29330, 28975, 28752, 28914, 29269, 29409, 29183, 28847, 28788, 29070, 29367, 29342, 29025, 28778, 28886, 29222, 29402, 29222, 28886, 28778, 29025, 29342, 29367, 29070, 28788, 28847, 29183, 29409, 29269, 28914, 28752, 28975, 29330, 29409, 29118, 28780, 28791, 29145, 29438, 29333, 28936, 28699, 28907, 29330, 29484, 29181, 28750, 28694, 29097, 29502, 29441, 28957, 28592, 28792, 29349, 29628, 29286, 28674, 28501, 29018, 29652, 29667, 28981, 28335, 28531, 29425, 30005, 29541, 28418, 27919, 28817, 30204, 30454, 28961, 27056, 27299, 30225, 32767, 31018, 20654, 0, -20654, -31018, -32767, -30225, -27299, -27056, -28961, -30454, -30204, -28817, -27919, -28418, -29541, -30005, -29425, -28531, -28335, -28981, -29667, -29652, -29018, -28501, -28674, -29286, -29628, -29349, -28792, -28592, -28957, -29441, -29502, -29097, -28694, -28750, -29181, -29484, -29330, -28907, -28699, -28936, -29333, -29438, -29145, -28791, -28780, -29118, -29409, -29330, -28975, -28752, -28914, -29269, -29409, -29183, -28847, -28788, -29070, -29367, -29342, -29025, -28778, -28886, -29222, -29402, -29222, -28886, -28778, -29025, -29342, -29367, -29070, -28788, -28847, -29183, -29409, -29269, -28914, -28752, -28975, -29330, -29409, -29118, -28780, -28791, -29145, -29438, -29333, -28936, -28699, -28907, -29330, -29484, -29181, -28750, -28694, -29097, -29502, -29441, -28957, -28592, -28792, -29349, -29628, -29286, -28674, -28501, -29018, -29652, -29667, -28981, -28335, -28531, -29425, -30005, -29541, -28418, -27919, -28817, -30204, -30454, -28961, -27056, -27299, -30225, -32767, -31018, -20654},
    {0, 17758, 28762, 32767, 32415, 29901, 27494, 26958, 28242, 29916, 30695, 30238, 29063, 28137, 28157, 28983, 29862, 30133, 29669, 28884, 28411, 28604, 29250, 29801, 29849, 29394, 28815, 28580, 28856, 29389, 29746, 29661, 29224, 28789, 28706, 29027, 29475, 29690, 29518, 29103, 28783, 28813, 29158, 29530, 29634, 29398, 29013, 28791, 28910, 29266, 29564, 29574, 29291, 28943, 28812, 29005, 29356, 29584, 29509, 29191, 28887, 28844, 29097, 29437, 29591, 29437, 29097, 28844, 28887, 29191, 29509, 29584, 29356, 29005, 28812, 28943, 29291, 29574, 29564, 29266, 28910, 28791, 29013, 29398, 29634, 29530, 29158, 28813, 28783, 29103, 29518, 29690, 29475, 29027, 28706, 28789, 29224, 29661, 29746, 29389, 28856, 28580, 28815, 29394, 29849, 29801, 29250, 28604, 28411, 28884, 29669, 30133, 29862, 28983, 28157, 28137, 29063, 30238, 30695, 29916, 28242, 26958, 27494, 29901, 32415, 32767, 28762, 17758, 0, -17758, -28762, -32767, -32415, -29901, -27494, -26958, -28242, -29916, -30695, -30238, -29063, -28137, -28157, -28983, -29862, -30133, -29669, -28884, -28411, -28604, -29250, -29801, -29849, -29394, -28815, -28580, -28856, -29389, -29746, -29661, -29224, -28789, -28706, -29027, -29475, -29690, -29518, -29103, -28783, -28813, -29158, -29530, -29634, -29398, -29013, -28791, -28910, -29266, -29564, -29574, -29291, -28943, -28812, -29005, -29356, -29584, -29509, -29191, -28887, -28844, -29097, -29437, -29591, -29437, -29097, -28844, -28887, -29191, -29509, -29584, -29356, -29005, -28812, -28943, -29291, -29574, -29564, -29266, -28910, -28791, -29013, -29398, -29634, -29530, -29158, -28813, -28783, -29103, -29518, -29690, -29475, -29027, -28706, -28789, -29224, -29661, -29746, -29389, -28856, -28580, -28815, -29394, -29849, -29801, -29250, -28604, -28411, -28884, -29669, -30133, -29862, -28983, -28157, -28137, -29063, -30238, -30695, -29916, -28242, -26958, -27494, -29901, -32415, -32767, -28762, -17758},
    {0, 15185, 25948, 31333, 32767, 31749, 29523, 27461, 26674, 27345, 28769, 30012, 30473, 30059, 29097, 28165, 27792, 28136, 28917, 29640, 29923, 29658, 29030, 28413, 28163, 28402, 28953, 29479, 29688, 29486, 29008, 28533, 28339, 28528, 28968, 29392, 29564, 29397, 28998, 28601, 28437, 28597, 28975, 29344, 29493, 29346, 28992, 28638, 28492, 28636, 28980, 29316, 29454, 29317, 28988, 28658, 28521, 28657, 28983, 29305, 29436, 29305, 28986, 28663, 28529, 28663, 28986, 29305, 29436, 29305, 28983, 28657, 28521, 28658, 28988, 29317, 29454, 29316, 28980, 28636, 28492, 28638, 28992, 29346, 29493, 29344, 28975, 28597, 28437, 28601, 28998, 29397, 29564, 29392, 28968, 28528, 28339, 28533, 29008, 29486, 29688, 29479, 28953, 28402, 28163, 28413, 29030, 29658, 29923, 29640, 28917, 28136, 27792, 28165, 29097, 30059, 30473, 30012, 28769, 27345, 26674, 27461, 29523, 31749, 32767, 31333, 25948, 15185, 0, -15185, -25948, -31333, -32767, -31749, -29523, -27461, -26674, -27345, -28769, -30012, -30473, -30059, -29097, -28165, -27792, -28136, -28917, -29640, -29923, -29658, -29030, -28413, -28163, -28402, -28953, -29479, -29688, -29486, -29008, -28533, -28339, -28528, -28968, -29392, -29564, -29397, -28998, -28601, -28437, -28597, -28975, -29344, -29493, -29346, -28992, -28638, -28492, -28636, -28980, -29316, -29454, -29317, -28988, -28658, -28521, -28657, -28983, -29305, -29436, -29305, -28986, -28663, -28529, -28663, -28986, -29305, -29436, -29305, -28983, -28657, -28521, -28658, -28988, -29317, -29454, -29316, -28980, -28636, -28492, -28638, -28992, -29346, -29493, -29344, -28975, -28597, -28437, -28601, -28998, -29397, -29564, -29392, -28968, -28528, -28339, -28533, -29008, -29486, -29688, -29479, -28953, -28402, -28163, -28413, -29030, -29658, -29923, -29640, -28917, -28136, -27792, -28165, -29097, -30059, -30473, -30012, -28769, -27345, -26674, -27461, -29523, -31749, -32767, -31333, -25948, -15185},
    {0, 12580, 22574, 28906, 31998, 32767, 31973, 30268, 28383, 27043, 26679, 27266, 28396, 29547, 30303, 30470, 30068, 29296, 28465, 27899, 27800, 28168, 28813, 29460, 29870, 29915, 29606, 29073, 28530, 28189, 28175, 28477, 28956, 29417, 29688, 29676, 29401, 28972, 28559, 28324, 28355, 28632, 29035, 29402, 29595, 29549, 29285, 28907, 28564, 28391, 28457, 28728, 29093, 29406, 29551, 29474, 29206, 28852, 28550, 28420, 28517, 28796, 29146, 29430, 29537, 29430, 29146, 28796, 28517, 28420, 28550, 28852, 29206, 29474, 29551, 29406, 29093, 28728, 28457, 28391, 28564, 28907, 29285, 29549, 29595, 29402, 29035, 28632, 28355, 28324, 28559, 28972, 29401, 29676, 29688, 29417, 28956, 28477, 28175, 28189, 28530, 29073, 29606, 29915, 29870, 29460, 28813, 28168, 27800, 27899, 28465, 29296, 30068, 30470, 30303, 29547, 28396, 27266, 26679, 27043, 28383, 30268, 31973, 32767, 31998, 28906, 22574, 12580, 0, -12580, -22574, -28906, -31998, -32767, -31973, -30268, -28383, -27043, -26679, -27266, -28396, -29547, -30303, -30470, -30068, -29296, -28465, -27899, -27800, -28168, -28813, -29460, -29870, -29915, -29606, -29073, -28530, -28189, -28175, -28477, -28956, -29417, -29688, -29676, -29401, -28972, -28559, -28324, -28355, -28632, -29035, -29402, -29595, -29549, -29285, -28907, -28564, -28391, -28457, -28728, -29093, -29406, -29551, -29474, -29206, -28852, -28550, -28420, -28517, -28796, -29146, -29430, -29537, -29430, -29146, -28796, -28517, -28420, -28550, -28852, -29206, -29474, -29551, -29406, -29093, -28728, -28457, -28391, -28564, -28907, -29285, -29549, -29595, -29402, -29035, -28632, -28355, -28324, -28559, -28972, -29401, -29676, -29688, -29417, -28956, -28477, -28175, -28189, -28530, -29073, -29606, -29915, -29870, -29460, -28813, -28168, -27800, -27899, -28465, -29296, -30068, -30470, -30303, -29547, -28396, -27266, -26679, -27043, -28383, -30268, -31973, -32767, -31998, -28906, -22574, -12580},
    {0, 10765, 19883, 26445, 30441, 32364, 32767, 32088, 30717, 29086, 27663, 26817, 26713, 27266, 28216, 29234, 30040, 30463, 30444, 30036, 29373, 28645, 28061, 27779, 27860, 28254, 28822, 29391, 29809, 29976, 29863, 29516, 29036, 28559, 28221, 28116, 28264, 28610, 29048, 29449, 29707, 29757, 29594, 29266, 28867, 28509, 28296, 28286, 28478, 28812, 29186, 29496, 29659, 29633, 29428, 29101, 28743, 28458, 28326, 28388, 28623, 28961, 29302, 29553, 29645, 29553, 29302, 28961, 28623, 28388, 28326, 28458, 28743, 29101, 29428, 29633, 29659, 29496, 29186, 28812, 28478, 28286, 28296, 28509, 28867, 29266, 29594, 29757, 29707, 29449, 29048, 28610, 28264, 28116, 28221, 28559, 29036, 29516, 29863, 29976, 29809, 29391, 28822, 28254, 27860, 27779, 28061, 28645, 29373, 30036, 30444, 30463, 30041, 29234, 28216, 27266, 26713, 26817, 27663, 29086, 30717, 32088, 32767, 32364, 30441, 26445, 19883, 10765, 0, -10765, -19883, -26445, -30441, -32364, -32767, -32088, -30717, -29086, -27663, -26817, -26713, -27266, -28216, -29234, -30040, -30463, -30444, -30036, -29373, -28645, -28061, -27779, -27860, -28254, -28822, -29391, -29809, -29976, -29863, -29516, -29036, -28559, -28221, -28116, -28264, -28610, -29048, -29449, -29707, -29757, -29594, -29266, -28867, -28509, -28296, -28286, -28478, -28812, -29186, -29496, -29659, -29633, -29428, -29101, -28743, -28458, -28326, -28388, -28623, -28961, -29302, -29553, -29645, -29553, -29302, -28961, -28623, -28388, -28326, -28458, -28743, -29101, -29428, -29633, -29659, -29496, -29186, -28812, -28478, -28286, -28296, -28509, -28867, -29266, -29594, -29757, -29707, -29449, -29048, -28610, -28264, -28116, -28221, -28559, -29036, -29516, -29863, -29976, -29809, -29391, -28822, -28254, -27860, -27779, -28061, -28645, -29373, -30036, -30444, -30463, -30040, -29234, -28216, -27266, -26713, -26817, -27663, -29086, -30717, -32088, -32767, -32364, -30441, -26445, -19883, -10765},
    {0, 9851, 18435, 24969, 29313, 31767, 32767, 32685, 31824, 30480, 28990, 27707, 26906, 26718, 27105, 27891, 28834, 29698, 30306, 30564, 30459, 30042, 29425, 28754, 28188, 27855, 27823, 28082, 28545, 29092, 29588, 29928, 30047, 29932, 29617, 29180, 28722, 28352, 28157, 28179, 28404, 28771, 29186, 29551, 29785, 29843, 29714, 29432, 29062, 28691, 28408, 28278, 28334, 28558, 28891, 29252, 29558, 29739, 29756, 29607, 29326, 28978, 28642, 28400, 28312, 28400, 28642, 28978, 29326, 29607, 29756, 29739, 29558, 29252, 28891, 28558, 28334, 28278, 28408, 28691, 29062, 29432, 29714, 29843, 29785, 29551, 29186, 28771, 28404, 28179, 28157, 28352, 28722, 29180, 29617, 29932, 30047, 29928, 29588, 29092, 28545, 28082, 27823, 27855, 28188, 28754, 29425, 30042, 30459, 30564, 30306, 29698, 28834, 27891, 27105, 26718, 26906, 27707, 28990, 30480, 31824, 32685, 32767, 31767, 29313, 24969, 18435, 9851, 0, -9851, -18435, -24969, -29313, -31767, -32767, -32685, -31824, -30480, -28990, -27707, -26906, -26718, -27105, -27891, -28834, -29698, -30306, -30564, -30459, -30042, -29425, -28754, -28188, -27855, -27823, -28082, -28545, -29092, -29588, -29928, -30047, -29932, -29617, -29180, -28722, -28352, -28157, -28179, -28404, -28771, -29186, -29551, -29785, -29843, -29714, -29432, -29062, -28691, -28408, -28278, -28334, -28558, -28891, -29252, -29558, -29739, -29756, -29607, -29326, -28978, -28642, -28400, -28312, -28400, -28642, -28978, -29326, -29607, -29756, -29739, -29558, -29252, -28891, -28558, -28334, -28278, -28408, -28691, -29062, -29432, -29714, -29843, -29785, -29551, -29186, -28771, -28404, -28179, -28157, -28352, -28722, -29180, -29617, -29932, -30047, -29928, -29588, -29092, -28545, -28082, -27823, -27855, -28188, -28754, -29425, -30042, -30459, -30564, -30306, -29698, -28834, -27891, -27105, -26718, -26906, -27707, -28990, -30480, -31824, -32685, -32767, -31767, -29313, -24969, -18435, -9851},
    {0, 7924, 15177, 21260, 25941, 29239, 31330, 32436, 32767, 32488, 31745, 30691, 29498, 28348, 27411, 26811, 26610, 26796, 27296, 27994, 28760, 29476, 30043, 30401, 30522, 30407, 30088, 29618, 29072, 28530, 28077, 27778, 27675, 27775, 28052, 28453, 28911, 29352, 29713, 29948, 30030, 29950, 29727, 29394, 29002, 28609, 28277, 28055, 27978, 28054, 28269, 28585, 28951, 29309, 29608, 29805, 29873, 29805, 29612, 29321, 28974, 28624, 28325, 28124, 28053, 28124, 28325, 28624, 28974, 29321, 29612, 29805, 29873, 29805, 29608, 29309, 28951, 28585, 28269, 28054, 27978, 28055, 28277, 28609, 29002, 29394, 29727, 29950, 30030, 29948, 29713, 29352, 28911, 28453, 28052, 27775, 27675, 27778, 28077, 28530, 29072, 29618, 30088, 30407, 30522, 30401, 30043, 29476, 28760, 27994, 27296, 26796, 26610, 26811, 27411, 28348, 29498, 30691, 31745, 32488, 32767, 32436, 31330, 29239, 25941, 21260, 15177, 7924, 0, -7924, -15177, -21260, -25941, -29239, -31330, -32436, -32767, -32488, -31745, -30691, -29498, -28348, -27411, -26811, -26610, -26796, -27296, -27994, -28760, -29476, -30043, -30401, -30522, -30407, -30088, -29618, -29072, -28530, -28077, -27778, -27675, -27775, -28052, -28453, -28911, -29352, -29713, -29948, -30030, -29950, -29727, -29394, -29002, -28609, -28277, -28055, -27978, -28054, -28269, -28585, -28951, -29309, -29608, -29805, -29873, -29805, -29612, -29321, -28974, -28624, -28325, -28124, -28053, -28124, -28325, -28624, -28974, -29321, -29612, -29805, -29873, -29805, -29608, -29309, -28951, -28585, -28269, -28054, -27978, -28055, -28277, -28609, -29002, -29394, -29727, -29950, -30030, -29948, -29713, -29352, -28911, -28453, -28052, -27775, -27675, -27778, -28077, -28530, -29072, -29618, -30088, -30407, -30522, -30401, -30043, -29476, -28760, -27994, -27296, -26796, -26610, -26811, -27411, -28348, -29498, -30691, -31745, -32488, -32767, -32436, -31330, -29239, -25941, -21260, -15177, -7924},
    {0, 6957, 13458, 19137, 23780, 27334, 29870, 31521, 32441, 32767, 32611, 32071, 31247, 30249, 29193, 28204, 27394, 26845, 26600, 26663, 26995, 27528, 28178, 28858, 29487, 30001, 30356, 30530, 30517, 30331, 29997, 29558, 29066, 28576, 28147, 27828, 27654, 27643, 27788, 28066, 28437, 28853, 29265, 29623, 29895, 30050, 30079, 29979, 29763, 29460, 29100, 28726, 28382, 28109, 27939, 27893, 27976, 28173, 28462, 28805, 29161, 29487, 29750, 29919, 29977, 29919, 29750, 29487, 29161, 28805, 28462, 28173, 27976, 27893, 27939, 28109, 28382, 28726, 29100, 29460, 29763, 29979, 30079, 30050, 29895, 29623, 29265, 28853, 28437, 28066, 27788, 27643, 27654, 27828, 28147, 28576, 29066, 29558, 29997, 30331, 30517, 30530, 30356, 30001, 29487, 28858, 28178, 27528, 26995, 26663, 26600, 26845, 27394, 28204, 29193, 30249, 31247, 32071, 32611, 32767, 32441, 31521, 29870, 27334, 23780, 19137, 13458, 6957, 0, -6957, -13458, -19137, -23780, -27334, -29870, -31521, -32441, -32767, -32611, -32071, -31247, -30249, -29193, -28204, -27394, -26845, -26600, -26663, -26995, -27528, -28178, -28858, -29487, -30001, -30356, -30530, -30517, -30331, -29997, -29558, -29066, -28576, -28147, -27828, -27654, -27643, -27788, -28066, -28437, -28853, -29265, -29623, -29895, -30050, -30079, -29979, -29763, -29460, -29100, -28726, -28382, -28109, -27939, -27893, -27976, -28173, -28462, -28805, -29161, -29487, -29750, -29919, -29977, -29919, -29750, -29487, -29161, -28805, -28462, -28173, -27976, -27893, -27939, -28109, -28382, -28726, -29100, -29460, -29763, -29979, -30079, -30050, -29895, -29623, -29265, -28853, -28437, -28066, -27788, -27643, -27654, -27828, -28147, -28576, -29066, -29558, -29997, -30331, -30517, -30530, -30356, -30001, -29487, -28858, -28178, -27528, -26995, -26663, -26600, -26845, -27394, -28204, -29193, -30249, -31247, -32071, -32611, -32767, -32441, -31521, -29870, -27334, -23780, -19137, -13458, -6957},
    {0, 5982, 11672, 16823, 21264, 24911, 27764, 29878, 31345, 32258, 32705, 32767, 32504, 31980, 31255, 30400, 29490, 28602, 27813, 27184, 26763, 26570, 26606, 26850, 27260, 27787, 28373, 28963, 29508, 29967, 30311, 30522, 30594, 30525, 30330, 30026, 29641, 29208, 28764, 28347, 27992, 27730, 27584, 27563, 27665, 27879, 28181, 28539, 28924, 29300, 29635, 29905, 30088, 30175, 30157, 30040, 29832, 29550, 29217, 28861, 28512, 28201, 27955, 27798, 27744, 27798, 27955, 28201, 28512, 28861, 29217, 29550, 29832, 30040, 30157, 30175, 30088, 29905, 29635, 29300, 28924, 28539, 28181, 27879, 27665, 27563, 27584, 27730, 27992, 28347, 28764, 29208, 29641, 30026, 30330, 30525, 30594, 30522, 30311, 29967, 29508, 28963, 28373, 27787, 27260, 26850, 26606, 26570, 26763, 27184, 27813, 28602, 29490, 30400, 31255, 31980, 32504, 32767, 32705, 32258, 31345, 29878, 27764, 24911, 21264, 16823, 11672, 5982, 0, -5982, -11672, -16823, -21264, -24911, -27764, -29878, -31345, -32258, -32705, -32767, -32504, -31980, -31255, -30400, -29490, -28602, -27813, -27184, -26763, -26570, -26606, -26850, -27260, -27787, -28373, -28963, -29508, -29967, -30311, -30522, -30594, -30525, -30330, -30026, -29641, -29208, -28764, -28347, -27992, -27730, -27584, -27563, -27665, -27879, -28181, -28539, -28924, -29300, -29635, -29905, -30088, -30175, -30157, -30040, -29832, -29550, -29217, -28861, -28512, -28201, -27955, -27798, -27744, -27798, -27955, -28201, -28512, -28861, -29217, -29550, -29832, -30040, -30157, -30175, -30088, -29905, -29635, -29300, -28924, -28539, -28181, -27879, -27665, -27563, -27584, -27730, -27992, -28347, -28764, -29208, -29641, -30026, -30330, -30525, -30594, -30522, -30311, -29967, -29508, -28963, -28373, -27787, -27260, -26850, -26606, -26570, -26763, -27184, -27813, -28602, -29490, -30400, -31255, -31980, -32504, -32767, -32705, -32258, -31345, -29878, -27764, -24911, -21264, -16823, -11672, -5982},
    {0, 4992, 9815, 14314, 18372, 21909, 24893, 27323, 29233, 30669, 31690, 32347, 32692, 32767, 32609, 32254, 31739, 31097, 30370, 29604, 28845, 28137, 27520, 27029, 26686, 26507, 26490, 26628, 26900, 27281, 27738, 28239, 28750, 29241, 29683, 30057, 30346, 30538, 30631, 30621, 30513, 30316, 30042, 29708, 29332, 28936, 28545, 28181, 27868, 27624, 27465, 27397, 27426, 27547, 27751, 28024, 28346, 28699, 29058, 29404, 29715, 29976, 30171, 30294, 30335, 30294, 30171, 29976, 29715, 29404, 29058, 28699, 28346, 28024, 27751, 27547, 27426, 27397, 27465, 27624, 27868, 28181, 28545, 28936, 29332, 29708, 30042, 30316, 30513, 30621, 30631, 30538, 30346, 30057, 29683, 29241, 28750, 28239, 27738, 27281, 26900, 26628, 26490, 26507, 26686, 27029, 27520, 28137, 28845, 29604, 30370, 31097, 31739, 32254, 32609, 32767, 32692, 32347, 31690, 30669, 29233, 27323, 24893, 21909, 18372, 14314, 9815, 4992, 0, -4992, -9815, -14314, -18372, -21909, -24893, -27323, -29233, -30669, -31690, -32347, -32692, -32767, -32609, -32254, -31739, -31097, -30370, -29604, -28845, -28137, -27520, -27029, -26686, -26507, -26490, -26628, -26900, -27281, -27738, -28239, -28750, -29241, -29683, -30057, -30346, -30538, -30631, -30621, -30513, -30316, -30042, -29708, -29332, -28936, -28545, -28181, -27868, -27624, -27465, -27397, -27426, -27547, -27751, -28024, -28346, -28699, -29058, -29404, -29715, -29976, -30171, -30294, -30335, -30294, -30171, -29976, -29715, -29404, -29058, -28699, -28346, -28024, -27751, -27547, -27426, -27397, -27465, -27624, -27868, -28181, -28545, -28936, -29332, -29708, -30042, -30316, -30513, -30621, -30631, -30538, -30346, -30057, -29683, -29241, -28750, -28239, -27738, -27281, -26900, -26628, -26490, -26507, -26686, -27029, -27520, -28137, -28845, -29604, -30370, -31097, -31739, -32254, -32609, -32767, -32692, -32347, -31690, -30669, -29233, -27323, -24893, -21909, -18372, -14314, -9815, -4992},
    {0, 3996, 7907, 11648, 15148, 18354, 21227, 23748, 25912, 27729, 29219, 30405, 31318, 31986, 32433, 32687, 32767, 32693, 32482, 32153, 31724, 31211, 30637, 30026, 29397, 28779, 28192, 27660, 27199, 26829, 26559, 26396, 26342, 26395, 26546, 26784, 27096, 27465, 27874, 28303, 28736, 29156, 29548, 29899, 30198, 30439, 30613, 30719, 30754, 30719, 30617, 30451, 30228, 29955, 29643, 29301, 28943, 28584, 28235, 27910, 27625, 27389, 27213, 27105, 27067, 27105, 27213, 27389, 27625, 27910, 28235, 28584, 28943, 29301, 29643, 29955, 30228, 30451, 30617, 30719, 30754, 30719, 30613, 30439, 30198, 29899, 29548, 29156, 28736, 28303, 27874, 27465, 27096, 26784, 26546, 26395, 26342, 26396, 26559, 26829, 27199, 27660, 28192, 28779, 29397, 30026, 30637, 31211, 31724, 32153, 32482, 32693, 32767, 32687, 32433, 31986, 31318, 30405, 29219, 27729, 25912, 23748, 21227, 18354, 15148, 11648, 7907, 3996, 0, -3996, -7907, -11648, -15148, -18354, -21227, -23748, -25912, -27729, -29219, -30405, -31318, -31986, -32433, -32687, -32767, -32693, -32482, -32153, -31724, -31211, -30637, -30026, -29397, -28779, -28192, -27660, -27199, -26829, -26559, -26396, -26342, -26395, -26546, -26784, -27096, -27465, -27874, -28303, -28736, -29156, -29548, -29899, -30198, -30439, -30613, -30719, -30754, -30719, -30617, -30451, -30228, -29955, -29643, -29301, -28943, -28584, -28235, -27910, -27625, -27389, -27213, -27105, -27067, -27105, -27213, -27389, -27625, -27910, -28235, -28584, -28943, -29301, -29643, -29955, -30228, -30451, -30617, -30719, -30754, -30719, -30613, -30439, -30198, -29899, -29548, -29156, -28736, -28303, -27874, -27465, -27096, -26784, -26546, -26395, -26342, -26396, -26559, -26829, -27199, -27660, -28192, -28779, -29397, -30026, -30637, -31211, -31724, -32153, -32482, -32693, -32767, -32687, -32433, -31986, -31318, -30405, -29219, -27729, -25912, -23748, -21227, -18354, -15148, -11648, -7907, -3996},
    {0, 3996, 7907, 11648, 15148, 18354, 21227, 23748, 25912, 27729, 29219, 30405, 31318, 31986, 32433, 32687, 32767, 32693, 32482, 32153, 31724, 31211, 30637, 30026, 29397, 28779, 28192, 27660, 27199, 26829, 26559, 26396, 26342, 26395, 26546, 26784, 27096, 27465, 27874, 28303, 28736, 29156, 29548, 29899, 30198, 30439, 30613, 30719, 30754, 30719, 30617, 30451, 30228, 29955, 29643, 29301, 28943, 28584, 28235, 27910, 27625, 27389, 27213, 27105, 27067, 27105, 27213, 27389, 27625, 27910, 28235, 28584, 28943, 29301, 29643, 29955, 30228, 30451, 30617, 30719, 30754, 30719, 30613, 30439, 30198, 29899, 29548, 29156, 28736, 28303, 27874, 27465, 27096, 26784, 26546, 26395, 26342, 26396, 26559, 26829, 27199, 27660, 28192, 28779, 29397, 30026, 30637, 31211, 31724, 32153, 32482, 32693, 32767, 32687, 32433, 31986, 31318, 30405, 29219, 27729, 25912, 23748, 21227, 18354, 15148, 11648, 7907, 3996, 0, -3996, -7907, -11648, -15148, -18354, -21227, -23748, -25912, -27729, -29219, -30405, -31318, -31986, -32433, -32687, -32767, -32693, -32482, -32153, -31724, -31211, -30637, -30026, -29397, -28779, -28192, -27660, -27199, -26829, -26559, -26396, -26342, -26395, -26546, -26784, -27096, -27465, -27874, -28303, -28736, -29156, -29548, -29899, -30198, -30439, -30613, -30719, -30754, -30719, -30617, -30451, -30228, -29955, -29643, -29301, -28943, -28584, -28235, -27910, -27625, -27389, -27213, -27105, -27067, -27105, -27213, -27389, -27625, -27910, -28235, -28584, -28943, -29301, -29643, -29955, -30228, -30451, -30617, -30719, -30754, -30719, -30613, -30439, -30198, -29899, -29548, -29156, -28736, -28303, -27874, -27465, -27096, -26784, -26546, -26395, -26342, -26396, -26559, -26829, -27199, -27660, -28192, -28779, -29397, -30026, -30637, -31211, -31724, -32153, -32482, -32693, -32767, -32687, -32433, -31986, -31318, -30405, -29219, -27729, -25912, -23748, -21227, -18354, -15148, -11648, -7907, -3996},
    {0, 2995, 5955, 8842, 11624, 14272, 16761, 19073, 21197, 23121, 24847, 26373, 27708, 28858, 29834, 30648, 31312, 31837, 32235, 32516, 32691, 32767, 32753, 32656, 32483, 32241, 31938, 31580, 31178, 30738, 30271, 29786, 29294, 28805, 28329, 27878, 27461, 27085, 26760, 26490, 26282, 26139, 26062, 26051, 26104, 26220, 26392, 26616, 26883, 27188, 27523, 27878, 28245, 28614, 28980, 29335, 29670, 29980, 30259, 30503, 30708, 30870, 30987, 31059, 31083, 31059, 30987, 30870, 30708, 30503, 30259, 29980, 29670, 29335, 28980, 28614, 28245, 27878, 27523, 27188, 26883, 26616, 26392, 26220, 26104, 26051, 26062, 26139, 26282, 26490, 26760, 27085, 27461, 27878, 28329, 28805, 29294, 29786, 30271, 30738, 31178, 31580, 31938, 32241, 32483, 32656, 32753, 32767, 32691, 32516, 32235, 31837, 31312, 30648, 29834, 28858, 27708, 26373, 24847, 23121, 21197, 19073, 16761, 14272, 11624, 8842, 5955, 2995, 0, -2995, -5955, -8842, -11624, -14272, -16761, -19073, -21197, -23121, -24847, -26373, -27708, -28858, -29834, -30648, -31312, -31837, -32235, -32516, -32691, -32767, -32753, -32656, -32483, -32241, -31938, -31580, -31178, -30738, -30271, -29786, -29294, -28805, -28329, -27878, -27461, -27085, -26760, -26490, -26282, -26139, -26062, -26051, -26104, -26220, -26392, -26616, -26883, -27188, -27523, -27878, -28245, -28614, -28980, -29335, -29670, -29980, -30259, -30503, -30708, -30870, -30987, -31059, -31083, -31059, -30987, -30870, -30708, -30503, -30259, -29980, -29670, -29335, -28980, -28614, -28245, -27878, -27523, -27188, -26883, -26616, -26392, -26220, -26104, -26051, -26062, -26139, -26282, -26490, -26760, -27085, -27461, -27878, -28329, -28805, -29294, -29786, -30271, -30738, -31178, -31580, -31938, -32241, -32483, -32656, -32753, -32767, -32691, -32516, -32235, -31837, -31312, -30648, -29834, -28858, -27708, -26373, -24847, -23121, -21197, -19073, -16761, -14272, -11624, -8842, -5955, -2995},
    {0, 2995, 5955, 8842, 11624, 14272, 16761, 19073, 21197, 23121, 24847, 26373, 27708, 28858, 29834, 30648, 31312, 31837, 32235, 32516, 32691, 32767, 32753, 32656, 32483, 32241, 31938, 31580, 31178, 30738, 30271, 29786, 29294, 28805, 28329, 27878, 27461, 27085, 26760, 26490, 26282, 26139, 26062, 26051, 26104, 26220, 26392, 26616, 26883, 27188, 27523, 27878, 28245, 28614, 28980, 29335, 29670, 29980, 30259, 30503, 30708, 30870, 30987, 31059, 31083, 31059, 30987, 30870, 30708, 30503, 30259, 29980, 29670, 29335, 28980, 28614, 28245, 27878, 27523, 27188, 26883, 26616, 26392, 26220, 26104, 26051, 26062, 26139, 26282, 26490, 26760, 27085, 27461, 27878, 28329, 28805, 29294, 29786, 30271, 30738, 31178, 31580, 31938, 32241, 32483, 32656, 32753, 32767, 32691, 32516, 32235, 31837, 31312, 30648, 29834, 28858, 27708, 26373, 24847, 23121, 21197, 19073, 16761, 14272, 11624, 8842, 5955, 2995, 0, -2995, -5955, -8842, -11624, -14272, -16761, -19073, -21197, -23121, -24847, -26373, -27708, -28858, -29834, -30648, -31312, -31837, -32235, -32516, -32691, -32767, -32753, -32656, -32483, -32241, -31938, -31580, -31178, -30738, -30271, -29786, -29294, -28805, -28329, -27878, -27461, -27085, -26760, -26490, -26282, -26139, -26062, -26051, -26104, -26220, -26392, -26616, -26883, -27188, -27523, -27878, -28245, -28614, -28980, -29335, -29670, -29980, -30259, -30503, -30708, -30870, -30987, -31059, -31083, -31059, -30987, -30870, -30708, -30503, -30259, -29980, -29670, -29335, -28980, -28614, -28245, -27878, -27523, -27188, -26883, -26616, -26392, -26220, -26104, -26051, -26062, -26139, -26282, -26490, -26760, -27085, -27461, -27878, -28329, -28805, -29294, -29786, -30271, -30738, -31178, -31580, -31938, -32241, -32483, -32656, -32753, -32767, -32691, -32516, -32235, -31837, -31312, -30648, -29834, -28858, -27708, -26373, -24847, -23121, -21197, -19073, -16761, -14272, -11624, -8842, -5955, -2995},
    {0, 1984, 3960, 5914, 7837, 9718, 11549, 13321, 15029, 16664, 18224, 19700, 21093, 22399, 23619, 24750, 25794, 26753, 27627, 28420, 29135, 29775, 30341, 30840, 31272, 31644, 31957, 32214, 32419, 32575, 32682, 32745, 32767, 32747, 32687, 32592, 32462, 32299, 32104, 31880, 31630, 31354, 31055, 30736, 30400, 30050, 29688, 29317, 28943, 28566, 28193, 27825, 27466, 27121, 26793, 26484, 26197, 25938, 25706, 25507, 25341, 25210, 25114, 25058, 25039, 25058, 25114, 25210, 25341, 25507, 25706, 25938, 26197, 26484, 26793, 27121, 27466, 27825, 28193, 28566, 28943, 29317, 29688, 30050, 30400, 30736, 31055, 31354, 31630, 31880, 32104, 32299, 32462, 32592, 32687, 32747, 32767, 32745, 32682, 32575, 32419, 32214, 31957, 31644, 31272, 30840, 30341, 29775, 29135, 28420, 27627, 26753, 25794, 24750, 23619, 22399, 21093, 19700, 18224, 16664, 15029, 13321, 11549, 9718, 7837, 5914, 3960, 1984, 0, -1984, -3960, -5914, -7837, -9718, -11549, -13321, -15029, -16664, -18224, -19700, -21093, -22399, -23619, -24750, -25794, -26753, -27627, -28420, -29135, -29775, -30341, -30840, -31272, -31644, -31957, -32214, -32419, -32575, -32682, -32745, -32767, -32747, -32687, -32592, -32462, -32299, -32104, -31880, -31630, -31354, -31055, -30736, -30400, -30050, -29688, -29317, -28943, -28566, -28193, -27825, -27466, -27121, -26793, -26484, -26197, -25938, -25706, -25507, -25341, -25210, -25114, -25058, -25039, -25058, -25114, -25210, -25341, -25507, -25706, -25938, -26197, -26484, -26793, -27121, -27466, -27825, -28193, -28566, -28943, -29317, -29688, -30050, -30400, -30736, -31055, -31354, -31630, -31880, -32104, -32299, -32462, -32592, -32687, -32747, -32767, -32745, -32682, -32575, -32419, -32214, -31957, -31644, -31272, -30840, -30341, -29775, -29135, -28420, -27627, -26753, -25794, -24750, -23619, -22399, -21093, -19700, -18224, -16664, -15029, -13321, -11549, -9718, -7837, -5914, -3960, -1984},
    {0, 1984, 3960, 5914, 7837, 9718, 11549, 13321, 15029, 16664, 18224, 19700, 21093, 22399, 23619, 24750, 25794, 26753, 27627, 28420, 29135, 29775, 30341, 30840, 31272, 31644, 31957, 32214, 32419, 32575, 32682, 32745, 32767, 32747, 32687, 32592, 32462, 32299, 32104, 31880, 31630, 31354, 31055, 30736, 30400, 30050, 29688, 29317, 28943, 28566, 28193, 27825, 27466, 27121, 26793, 26484, 26197, 25938, 25706, 25507, 25341, 25210, 25114, 25058, 25039, 25058, 25114, 25210, 25341, 25507, 25706, 25938, 26197, 26484, 26793, 27121, 27466, 27825, 28193, 28566, 28943, 29317, 29688, 30050, 30400, 30736, 31055, 31354, 31630, 31880, 32104, 32299, 32462, 32592, 32687, 32747, 32767, 32745, 32682, 32575, 32419, 32214, 31957, 31644, 31272, 30840, 30341, 29775, 29135, 28420, 27627, 26753, 25794, 24750, 23619, 22399, 21093, 19700, 18224, 16664, 15029, 13321, 11549, 9718, 7837, 5914, 3960, 1984, 0, -1984, -3960, -5914, -7837, -9718, -11549, -13321, -15029, -16664, -18224, -19700, -21093, -22399, -23619, -24750, -25794, -26753, -27627, -28420, -29135, -29775, -30341, -30840, -31272, -31644, -31957, -32214, -32419, -32575, -32682, -32745, -32767, -32747, -32687, -32592, -32462, -32299, -32104, -31880, -31630, -31354, -31055, -30736, -30400, -30050, -29688, -29317, -28943, -28566, -28193, -27825, -27466, -27121, -26793, -26484, -26197, -25938, -25706, -25507, -25341, -25210, -25114, -25058, -25039, -25058, -25114, -25210, -25341, -25507, -25706, -25938, -26197, -26484, -26793, -27121, -27466, -27825, -28193, -28566, -28943, -29317, -29688, -30050, -30400, -30736, -31055, -31354, -31630, -31880, -32104, -32299, -32462, -32592, -32687, -32747, -32767, -32745, -32682, -32575, -32419, -32214, -31957, -31644, -31272, -30840, -30341, -29775, -29135, -28420, -27627, -26753, -25794, -24750, -23619, -22399, -21093, -19700, -18224, -16664, -15029, -13321, -11549, -9718, -7837, -5914, -3960, -1984},
    {0, 1984, 3960, 5914, 7837, 9718, 11549, 13321, 15029, 16664, 18224, 19700, 21093, 22399, 23619, 24750, 25794, 26753, 27627, 28420, 29135, 29775, 30341, 30840, 31272, 31644, 31957, 32214, 32419, 32575, 32682, 32745, 32767, 32747, 32687, 32592, 32462, 32299, 32104, 31880, 31630, 31354, 31055, 30736, 30400, 30050, 29688, 29317, 28943, 28566, 28193, 27825, 27466, 27121, 26793, 26484, 26197, 25938, 25706, 25507, 25341, 25210, 25114, 25058, 25039, 25058, 25114, 25210, 25341, 25507, 25706, 25938, 26197, 26484, 26793, 27121, 27466, 27825, 28193, 28566, 28943, 29317, 29688, 30050, 30400, 30736, 31055, 31354, 31630, 31880, 32104, 32299, 32462, 32592, 32687, 32747, 32767, 32745, 32682, 32575, 32419, 32214, 31957, 31644, 31272, 30840, 30341, 29775, 29135, 28420, 27627, 26753, 25794, 24750, 23619, 22399, 21093, 19700, 18224, 16664, 15029, 13321, 11549, 9718, 7837, 5914, 3960, 1984, 0, -1984, -3960, -5914, -7837, -9718, -11549, -13321, -15029, -16664, -18224, -19700, -21093, -22399, -23619, -24750, -25794, -26753, -27627, -28420, -29135, -29775, -30341, -30840, -31272, -31644, -31957, -32214, -32419, -32575, -32682, -32745, -32767, -32747, -32687, -32592, -32462, -32299, -32104, -31880, -31630, -31354, -31055, -30736, -30400, -30050, -29688, -29317, -28943, -28566, -28193, -27825, -27466, -27121, -26793, -26484, -26197, -25938, -25706, -25507, -25341, -25210, -25114, -25058, -25039, -25058, -25114, -25210, -25341, -25507, -25706, -25938, -26197, -26484, -26793, -27121, -27466, -27825, -28193, -28566, -28943, -29317, -29688, -30050, -30400, -30736, -31055, -31354, -31630, -31880, -32104, -32299, -32462, -32592, -32687, -32747, -32767, -32745, -32682, -32575, -32419, -32214, -31957, -31644, -31272, -30840, -30341, -29775, -29135, -28420, -27627, -26753, -25794, -24750, -23619, -22399, -21093, -19700, -18224, -16664, -15029, -13321, -11549, -9718, -7837, -5914, -3960, -1984},
    {0, 955, 1909, 2861, 3810, 4754, 5692, 6624, 7548, 8462, 9368, 10263, 11144, 12014, 12871, 13713, 14540, 15351, 16145, 16924, 17683, 18425, 19148, 19852, 20538, 21203, 21849, 22474, 23079, 23663, 24228, 24772, 25296, 25800, 26284, 26747, 27190, 27615, 28020, 28406, 28773, 29122, 29452, 29765, 30059, 30337, 30599, 30844, 31072, 31285, 31482, 31664, 31830, 31983, 32121, 32246, 32356, 32453, 32537, 32607, 32664, 32709, 32742, 32761, 32767, 32761, 32742, 32709, 32664, 32607, 32537, 32453, 32356, 32246, 32121, 31983, 31830, 31664, 31482, 31285, 31072, 30844, 30599, 30337, 30059, 29765, 29452, 29122, 28773, 28406, 28020, 27615, 27190, 26747, 26284, 25800, 25296, 24772, 24228, 23663, 23079, 22474, 21849, 21203, 20538, 19852, 19148, 18425, 17683, 16924, 16145, 15351, 14540, 13713, 12871, 12014, 11144, 10263, 9368, 8462, 7548, 6624, 5692, 4754, 3810, 2861, 1909, 955, 0, -955, -1909, -2861, -3810, -4754, -5692, -6624, -7548, -8462, -9368, -10263, -11144, -12014, -12871, -13713, -14540, -15351, -16145, -16924, -17683, -18425, -19148, -19852, -20538, -21203, -21849, -22474, -23079, -23663, -24228, -24772, -25296, -25800, -26284, -26747, -27190, -27615, -28020, -28406, -28773, -29122, -29452, -29765, -30059, -30337, -30599, -30844, -31072, -31285, -31482, -31664, -31830, -31983, -32121, -32246, -32356, -32453, -32537, -32607, -32664, -32709, -32742, -32761, -32767, -32761, -32742, -32709, -32664, -32607, -32537, -32453, -32356, -32246, -32121, -31983, -31830, -31664, -31482, -31285, -31072, -30844, -30599, -30337, -30059, -29765, -29452, -29122, -28773, -28406, -28020, -27615, -27190, -26747, -26284, -25800, -25296, -24772, -24228, -23663, -23079, -22474, -21849, -21203, -20538, -19852, -19148, -18425, -17683, -16924, -16145, -15351, -14540, -13713, -12871, -12014, -11144, -10263, -9368, -8462, -7548, -6624, -5692, -4754, -3810, -2861, -1909, -955},
    {0, 955, 1909, 2861, 3810, 4754, 5692, 6624, 7548, 8462, 9368, 10263, 11144, 12014, 12871, 13713, 14540, 15351, 16145, 16924, 17683, 18425, 19148, 19852, 20538, 21203, 21849, 22474, 23079, 23663, 24228, 24772, 25296, 25800, 26284, 26747, 27190, 27615, 28020, 28406, 28773, 29122, 29452, 29765, 30059, 30337, 30599, 30844, 31072, 31285, 31482, 31664, 31830, 31983, 32121, 32246, 32356, 32453, 32537, 32607, 32664, 32709, 32742, 32761, 32767, 32761, 32742, 32709, 32664, 32607, 32537, 32453, 32356, 32246, 32121, 31983, 31830, 31664, 31482, 31285, 31072, 30844, 30599, 30337, 30059, 29765, 29452, 29122, 28773, 28406, 28020, 27615, 27190, 26747, 26284, 25800, 25296, 24772, 24228, 23663, 23079, 22474, 21849, 21203, 20538, 19852, 19148, 18425, 17683, 16924, 16145, 15351, 14540, 13713, 12871, 12014, 11144, 10263, 9368, 8462, 7548, 6624, 5692, 4754, 3810, 2861, 1909, 955, 0, -955, -1909, -2861, -3810, -4754, -5692, -6624, -7548, -8462, -9368, -10263, -11144, -12014, -12871, -13713, -14540, -15351, -16145, -16924, -17683, -18425, -19148, -19852, -20538, -21203, -21849, -22474, -23079, -23663, -24228, -24772, -25296, -25800, -26284, -26747, -27190, -27615, -28020, -28406, -28773, -29122, -29452, -29765, -30059, -30337, -30599, -30844, -31072, -31285, -31482, -31664, -31830, -31983, -32121, -32246, -32356, -32453, -32537, -32607, -32664, -32709, -32742, -32761, -32767, -32761, -32742, -32709, -32664, -32607, -32537, -32453, -32356, -32246, -32121, -31983, -31830, -31664, -31482, -31285, -31072, -30844, -30599, -30337, -30059, -29765, -29452, -29122, -28773, -28406, -28020, -27615, -27190, -26747, -26284, -25800, -25296, -24772, -24228, -23663, -23079, -22474, -21849, -21203, -20538, -19852, -19148, -18425, -17683, -16924, -16145, -15351, -14540, -13713, -12871, -12014, -11144, -10263, -9368, -8462, -7548, -6624, -5692, -4754, -3810, -2861, -1909, -955},
    {0, 955, 1909, 2861, 3810, 4754, 5692, 6624, 7548, 8462, 9368, 10263, 11144, 12014, 12871, 13713, 14540, 15351, 16145, 16924, 17683, 18425, 19148, 19852, 20538, 21203, 21849, 22474, 23079, 23663, 24228, 24772, 25296, 25800, 26284, 26747, 27190, 27615, 28020, 28406, 28773, 29122, 29452, 29765, 30059, 30337, 30599, 30844, 31072, 31285, 31482, 31664, 31830, 31983, 32121, 32246, 32356, 32453, 32537, 32607, 32664, 32709, 32742, 32761, 32767, 32761, 32742, 32709, 32664, 32607, 32537, 32453, 32356, 32246, 32121, 31983, 31830, 31664, 31482, 31285, 31072, 30844, 30599, 30337, 30059, 29765, 29452, 29122, 28773, 28406, 28020, 27615, 27190, 26747, 26284, 25800, 25296, 24772, 24228, 23663, 23079, 22474, 21849, 21203, 20538, 19852, 19148, 18425, 17683, 16924, 16145, 15351, 14540, 13713, 12871, 12014, 11144, 10263, 9368, 8462, 7548, 6624, 5692, 4754, 3810, 2861, 1909, 955, 0, -955, -1909, -2861, -3810, -4754, -5692, -6624, -7548, -8462, -9368, -10263, -11144, -12014, -12871, -13713, -14540, -15351, -16145, -16924, -17683, -18425, -19148, -19852, -20538, -21203, -21849, -22474, -23079, -23663, -24228, -24772, -25296, -25800, -26284, -26747, -27190, -27615, -28020, -28406, -28773, -29122, -29452, -29765, -30059, -30337, -30599, -30844, -31072, -31285, -31482, -31664, -31830, -31983, -32121, -32246, -32356, -32453, -32537, -32607, -32664, -32709, -32742, -32761, -32767, -32761, -32742, -32709, -32664, -32607, -32537, -32453, -32356, -32246, -32121, -31983, -31830, -31664, -31482, -31285, -31072, -30844, -30599, -30337, -30059, -29765, -29452, -29122, -28773, -28406, -28020, -27615, -27190, -26747, -26284, -25800, -25296, -24772, -24228, -23663, -23079, -22474, -21849, -21203, -20538, -19852, -19148, -18425, -17683, -16924, -16145, -15351, -14540, -13713, -12871, -12014, -11144, -10263, -9368, -8462, -7548, -6624, -5692, -4754, -3810, -2861, -1909, -955}
    };

  3. #3
    Senior Member PaulStoffregen's Avatar
    Join Date
    Nov 2012
    Posts
    18,671
    Only the pulse and variable triangle have duty cycle modulation.

    What would duty cycle even mean or be defined for an arb function?

  4. #4
    Junior Member
    Join Date
    Nov 2018
    Posts
    6
    Yeah, stupid question by me. Im looking for the specific case when the arbritary is a bandlimited squarewave.

    The goal is to make a bandlimited pulsewave whos duty cycle can be modulated.
    Is the best way to deal with it is to make 2 bandlimited saws, where one is inverted and out of phase with the first one?

    By the way, awesome work with library!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •