import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;

public class TimeWheel2 extends JLayeredPane implements MouseListener,MouseMotionListener{

    private final double[][] data = {
{    4.0,   91.0,    5.0,    7.0,  224.0,  180.0,  127.0,  109.0,   71.0,    8.0,
     1.0,  239.0,   85.0,   90.0,   59.0,   51.0,    4.0,    0.0,  227.0,  131.0,
   131.0,   71.0,   91.0,    9.0,    4.0,  352.0,  196.0,  241.0,  153.0,   85.0,
     7.0,    7.0,  634.0,  228.0,  199.0,  161.0,  136.0,   14.0,    7.0,  530.0,
   241.0,  210.0,  188.0,   98.0,    7.0,    6.0,  418.0,  209.0,  179.0,  138.0,
   106.0,   11.0,    5.0,  375.0,  205.0,  164.0,  148.0,  147.0,    9.0,    3.0,
   399.0,  206.0,  241.0,  160.0,  105.0,    5.0,    3.0,  202.0,  230.0,  184.0,
   150.0,  104.0,    4.0,    8.0,  430.0,  223.0,  167.0,  166.0,  156.0,   11.0,
     3.0,  417.0,  219.0,  145.0,  139.0,  110.0,   13.0,    3.0,  368.0,  181.0,
   220.0,  142.0,  149.0,    4.0,    2.0,  284.0,   98.0,  105.0,   34.0,    3.0,
     6.0,    1.0,    3.0,  233.0,   97.0,  110.0,   63.0,    0.0,    3.0,  198.0,
    82.0,  119.0,   82.0,   47.0,    3.0,    2.0,  427.0,   89.0,   67.0,   52.0,
     4.0,    3.0,    4.0,  270.0,  131.0,   93.0,   91.0,   64.0,    3.0,    0.0,
   176.0,   90.0,  100.0,   74.0,   76.0,    4.0,    5.0,  185.0,   77.0,   59.0,
     3.0,   48.0,    5.0,    3.0,  276.0,  147.0,   81.0,   68.0,   45.0,    5.0,
     4.0,    3.0,  173.0,   90.0,  101.0,   56.0,    7.0,    3.0,  211.0,  119.0,
   106.0,   91.0,   62.0,    4.0,    4.0,  201.0,  135.0,  111.0,   91.0,   55.0,
     2.0,    4.0,  189.0,  113.0,   86.0,  115.0,   57.0,    8.0,    2.0,  219.0,
   122.0,   87.0,   87.0,   61.0,    5.0,    6.0,  220.0,  115.0,   89.0,   72.0,
    46.0,    6.0,    2.0,  175.0,  116.0,   89.0,   80.0,   57.0,    5.0,    3.0,
   167.0,   80.0,   54.0,   49.0,   39.0,    6.0,    2.0,  154.0,   82.0,   65.0,
    54.0,   34.0,    4.0,    1.0,  164.0,   79.0,   60.0,   62.0,   45.0,    4.0,
     3.0,  151.0,   53.0,   96.0,   51.0,   46.0,    4.0,    1.0,  126.0,   87.0,
    76.0,   61.0,   43.0,    7.0,    6.0,  164.0,  123.0,   74.0,   90.0,   37.0,
     6.0,    4.0,  179.0,   96.0,   93.0,   86.0,   63.0,    3.0,    5.0,  252.0,
   140.0,  146.0,  150.0,   82.0,   11.0,    3.0,  331.0,  185.0,  172.0,  175.0,
   119.0,    4.0,    9.0,  409.0,  223.0,  183.0,  167.0,   91.0,    9.0,    4.0,
   402.0,  229.0,   84.0,  189.0,  133.0,    7.0,    4.0,  505.0,  248.0,  248.0,
   176.0,  119.0,    8.0,    3.0,  651.0,  194.0,  221.0,  172.0,  109.0,   13.0,
     3.0,  402.0,  210.0,  175.0,  153.0,   94.0,    8.0,    8.0,  413.0,  195.0,
   228.0,  149.0,   84.0,    6.0,    7.0,  498.0,  193.0,  178.0,  143.0,  104.0,
    10.0,    6.0,  402.0,  226.0,  156.0,  139.0,   74.0,   13.0,    3.0,  369.0,
   325.0,  215.0,  193.0,  268.0,    8.0,    2.0,  480.0,  299.0,  204.0,  209.0,
   143.0,    7.0,    3.0,  485.0,  329.0,  261.0,  246.0,  214.0,    6.0,    7.0,
   681.0,  329.0,  279.0,  254.0,  144.0,   19.0,    7.0,  555.0,  286.0,  217.0,
   196.0,   92.0,   10.0,    4.0,  315.0,  117.0,   63.0,    5.0,    4.0,    5.0,
    10.0,  191.0,   63.0,   37.0,    4.0,    5.0,   28.0,    8.0,  643.0,  367.0,
   235.0,  174.0,   54.0,    9.0,    3.0,  503.0,  270.0,  195.0,  160.0,  120.0,
     8.0,    6.0,  433.0,  235.0,  196.0,  145.0,  102.0,    6.0,    7.0,  464.0,
   242.0,  217.0,  170.0,  117.0,   16.0,    6.0,  223.0,  223.0,  201.0,  158.0,
   186.0,   18.0,   12.0,  489.0,  227.0,  145.0,  188.0,  140.0,   19.0,    6.0,
   646.0,  504.0,  286.0,  239.0,  174.0,   27.0,   15.0,  671.0,  306.0,  262.0,
   233.0,  102.0,   17.0,    3.0,  348.0,  169.0,  140.0,  152.0,  121.0,   15.0,
     5.0,  364.0,  117.0,  194.0,  336.0,  143.0,   11.0,   10.0,  473.0,  293.0,
   211.0,  191.0,  124.0,   12.0,    5.0,  484.0,  320.0,  299.0,  179.0,  116.0,
    12.0,    7.0,  373.0,  178.0,  149.0,   57.0,    7.0,    7.0,    4.0,    5.0,
   408.0,  207.0,  158.0,   87.0,    7.0,    7.0,  336.0,  140.0,  112.0,  138.0,
    83.0,    3.0,    4.0,  238.0,  104.0,  102.0,  108.0,   54.0,    6.0,    1.0,
   212.0,  141.0,  108.0,  107.0,   64.0,    7.0,    1.0,  244.0,  145.0,  124.0,
    73.0,   66.0,    7.0,    1.0,  174.0,   59.0,   75.0,    4.0,   41.0,    8.0,
     0.0,  325.0,  199.0,  139.0,   93.0,   43.0,    7.0,    2.0,    3.0,  320.0,
   143.0,  134.0,   66.0,    6.0,    4.0,  201.0,   93.0,   95.0,   65.0,   32.0,
     7.0,    1.0,  167.0,  130.0,   94.0,  112.0,   55.0,    3.0,    3.0,  235.0,
   123.0,  153.0,   93.0,   52.0,   11.0,    5.0,  233.0,  109.0,   94.0,   95.0,
    48.0,    3.0,    4.0,  167.0,   80.0,  100.0,   83.0,   48.0,    8.0,    3.0,
   190.0,   97.0,   87.0,  109.0,   36.0,   11.0,    4.0,  186.0,  108.0,   80.0,
    57.0,   43.0,    7.0,    2.0,  135.0,   86.0,   71.0,   47.0,   56.0,    8.0,
     2.0,   73.0,   46.0,   41.0,   25.0,   30.0,    1.0,    1.0,  125.0,   54.0,
    57.0,   50.0,   35.0,    3.0,    4.0,  172.0,   75.0,   50.0,   44.0,   31.0,
     1.0,    2.0,  183.0,   82.0,   67.0,   74.0,   26.0,   11.0,    5.0,  186.0,
    76.0,   75.0,   55.0,   24.0,    2.0,    1.0,   64.0,   40.0,   44.0,   52.0,
    51.0,    3.0,    3.0,  202.0,  114.0,  108.0,  105.0,   77.0,    9.0,    1.0,
   263.0,  140.0,  143.0,  128.0,  100.0,   12.0,   10.0,  317.0,  183.0,  119.0,
    98.0,  103.0,   13.0,    5.0,  115.0,  220.0,  190.0,  139.0,  129.0,    6.0,
     2.0,  428.0,  238.0,  213.0,  186.0,   91.0,    9.0,    2.0,  494.0,  238.0,
   214.0,  168.0,   86.0,    5.0,    1.0,  435.0,  124.0,  199.0,  202.0,  106.0,
    13.0,    8.0,  486.0,  219.0,  181.0,  155.0,  145.0,   13.0,    2.0,  414.0,
   198.0,  181.0,  135.0,   69.0,   13.0,    3.0,  422.0,  200.0,  155.0,  132.0,
   113.0,    9.0,    9.0,  530.0,  204.0,  203.0,  172.0,   88.0,    7.0,    1.0,
   345.0,  177.0,  121.0,   49.0,    8.0,    0.0,    0.0,   20.0,    7.0,    9.0,
    11.0,    5.0,    1.0,    0.0,   17.0,   10.0,    8.0,    7.0,   11.0,    1.0,
     1.0,   27.0,   25.0,   16.0,   15.0,   14.0,    1.0,    0.0,   41.0,   21.0,
    21.0,   14.0,    7.0,    0.0,    4.0,   73.0,   36.0,   47.0,   45.0,   12.0,
     8.0,    5.0,  686.0,  298.0,  219.0,  218.0,  159.0,   18.0,    9.0,  558.0,
   300.0,  310.0,  283.0,  170.0,   10.0,    5.0,  850.0,  356.0,  321.0,  264.0,
   190.0,   13.0,   18.0,  785.0,  373.0,  151.0,  273.0,  185.0,   19.0,   11.0,
   813.0,  363.0,  284.0,  224.0,  220.0,   15.0,   12.0,  710.0,  322.0,  202.0,
   218.0,  105.0,   16.0,   16.0,  449.0,  288.0,  228.0,  239.0,  124.0,    9.0,
     5.0,  442.0,  262.0,  187.0,  155.0,  132.0,    5.0,    5.0,  393.0,  240.0,
   261.0,  129.0,  118.0,   12.0,    0.0,  390.0,  186.0,  163.0,  153.0,   95.0,
     3.0,    5.0,  398.0,  224.0,  147.0,  174.0,  108.0,    4.0,    0.0,  372.0,
   182.0,  140.0,  147.0,   84.0,   11.0,    3.0,  410.0,  138.0,  131.0,  137.0,
    91.0,    7.0,    2.0,  340.0,  217.0,  167.0,  146.0,  112.0,    4.0,    2.0,
   392.0,  171.0,  167.0,  148.0,   83.0,    8.0,    3.0,  287.0,  148.0,  101.0,
    58.0,    3.0,    5.0,    6.0,    6.0,  338.0,  133.0,   88.0,   69.0,    6.0,
     5.0,    1.0,  227.0,  118.0,  120.0,   93.0,    4.0,    1.0,  246.0,  100.0,
    89.0,   67.0,   28.0,    2.0,    1.0,  196.0,   94.0,   78.0,   43.0,   57.0,
     5.0,    0.0,  147.0,   98.0,   81.0,  101.0,   69.0,    5.0,    3.0,  259.0,
   117.0,   65.0,    6.0,   66.0,    7.0,    5.0,  284.0,  164.0,  123.0,   88.0,
    64.0,    6.0,    0.0,    5.0,  218.0,  152.0,  125.0,   59.0,    4.0,    2.0,
   193.0,   97.0,   92.0,   87.0,   54.0,    8.0,    1.0,  221.0,  140.0,  112.0,
   114.0,   47.0,    6.0,    1.0,  197.0,   83.0,  104.0,   91.0,   65.0,    6.0,
     2.0,  237.0,  141.0,  119.0,   89.0,   49.0,    6.0,    3.0,  242.0,  116.0,
    91.0,   94.0,   48.0,    5.0,    4.0,  160.0,   80.0,   76.0,   65.0,   34.0,
     5.0,    5.0,   79.0,   86.0,   56.0,   44.0,   37.0,    5.0,    2.0,  159.0,
    98.0,   48.0,   57.0,   36.0,    2.0,    1.0,  136.0,   67.0,   35.0,   57.0,
    36.0,    4.0,    3.0,  150.0,   78.0,   65.0,   60.0,   51.0,    5.0,    1.0,
   160.0,   83.0,   69.0,   57.0,   49.0,    3.0,    3.0,  177.0,   49.0,   93.0,
    90.0,   61.0,    6.0,    5.0,  228.0,  121.0,  120.0,  119.0,   75.0,    4.0,
     4.0,  320.0,  171.0,  192.0,  155.0,  100.0,    7.0,    2.0,  389.0,  262.0,
   186.0,  154.0,   81.0,   14.0,    3.0,  143.0,    8.0,  357.0,  204.0,  104.0,
     9.0,    4.0,  382.0,  235.0,  103.0,  180.0,  126.0,   17.0,    4.0,  396.0,
   204.0,  192.0,  159.0,  102.0,    9.0,    5.0,  383.0,  202.0,  167.0,  161.0,
    88.0,    7.0,    4.0,  208.0,   11.0,  389.0,  197.0,  122.0,    7.0,    4.0,
   224.0,  217.0,  193.0,  168.0,  110.0,   10.0,    1.0,  445.0,  222.0,  181.0,
   159.0,   97.0,   10.0,    4.0,  406.0,  222.0,  212.0,  150.0,  125.0,   13.0,
     4.0,  665.0,  188.0,  182.0,  158.0,  104.0,    3.0,    6.0,  412.0,  210.0,
   180.0,  234.0,  114.0,   13.0,    7.0,  238.0,  251.0,  178.0,  141.0,  113.0,
    11.0,    6.0,  432.0,  205.0,  137.0,   91.0,   34.0,    1.0,    0.0,    2.0,
     3.0,  106.0,   64.0,   41.0,    8.0,    0.0 },
{    2.0,   11.0,    4.0,    0.0,   42.0,   24.0,   19.0,   12.0,   13.0,    0.0,
     1.0,   32.0,   11.0,   16.0,    7.0,   14.0,    1.0,    0.0,   18.0,   88.0,
    10.0,   11.0,    8.0,    1.0,    0.0,   16.0,   16.0,   10.0,    8.0,    5.0,
     0.0,    0.0,   33.0,   17.0,   12.0,    2.0,    8.0,    0.0,    0.0,   30.0,
    18.0,    8.0,   14.0,   14.0,    1.0,    1.0,   27.0,   15.0,    8.0,   11.0,
     6.0,    0.0,    2.0,   25.0,    9.0,   14.0,   12.0,    9.0,    2.0,    0.0,
    32.0,    9.0,   14.0,    7.0,    7.0,    0.0,    0.0,   37.0,    8.0,   13.0,
     7.0,    8.0,    0.0,    4.0,   33.0,   15.0,   12.0,   11.0,    8.0,    0.0,
     0.0,   28.0,   18.0,   10.0,   11.0,    6.0,    0.0,    0.0,   29.0,   14.0,
    11.0,   14.0,   12.0,    0.0,    1.0,   30.0,   13.0,   11.0,    6.0,    1.0,
     0.0,    0.0,    1.0,   29.0,   10.0,    8.0,    8.0,    1.0,    0.0,   52.0,
    14.0,   13.0,   13.0,   19.0,    0.0,    1.0,   41.0,   20.0,   22.0,    3.0,
     1.0,    1.0,    0.0,   25.0,   22.0,    9.0,   12.0,    3.0,    2.0,    0.0,
    23.0,   10.0,    6.0,   11.0,    6.0,    0.0,    1.0,   32.0,   13.0,    4.0,
     0.0,    9.0,    1.0,    1.0,   45.0,   15.0,   11.0,   10.0,    4.0,    1.0,
     0.0,    1.0,   31.0,   14.0,   14.0,    7.0,    0.0,    1.0,   32.0,    5.0,
    18.0,   12.0,   14.0,    1.0,    0.0,   45.0,   23.0,   26.0,   10.0,   10.0,
     0.0,    0.0,   40.0,   15.0,   11.0,   13.0,    6.0,    1.0,    0.0,   31.0,
    16.0,   17.0,   10.0,   10.0,    2.0,    2.0,   41.0,   13.0,   14.0,   14.0,
     5.0,    1.0,    0.0,   55.0,   13.0,    4.0,    7.0,    9.0,    0.0,    0.0,
    36.0,    9.0,    4.0,    7.0,    6.0,    1.0,    0.0,  178.0,   17.0,    9.0,
     8.0,   11.0,    1.0,    3.0,   32.0,   10.0,   11.0,    9.0,    7.0,    1.0,
     0.0,   31.0,   15.0,   10.0,    8.0,    8.0,    2.0,    0.0,   44.0,   12.0,
    24.0,    9.0,   12.0,    1.0,    4.0,   38.0,   28.0,   20.0,   16.0,    7.0,
     1.0,    0.0,   37.0,   29.0,   15.0,   13.0,    9.0,    1.0,    1.0,   43.0,
    27.0,   14.0,   20.0,    6.0,    1.0,    0.0,   41.0,   26.0,   22.0,    9.0,
    10.0,    2.0,    1.0,   35.0,   25.0,    9.0,   20.0,    6.0,    1.0,    0.0,
    19.0,   23.0,   15.0,   15.0,   15.0,    1.0,    1.0,   43.0,   20.0,   15.0,
    16.0,   16.0,    0.0,    1.0,   54.0,   14.0,   21.0,   12.0,   11.0,    1.0,
     1.0,   42.0,   16.0,   17.0,   16.0,    6.0,    1.0,    0.0,   32.0,   13.0,
    22.0,   14.0,   13.0,    0.0,    0.0,   49.0,   19.0,   20.0,   11.0,   11.0,
     0.0,    0.0,   34.0,   13.0,   11.0,   15.0,    8.0,    0.0,    0.0,   46.0,
    23.0,   12.0,    9.0,   13.0,    1.0,    0.0,   43.0,   20.0,   11.0,   13.0,
     5.0,    3.0,    0.0,   40.0,   16.0,   14.0,   10.0,   12.0,    1.0,    0.0,
    37.0,   24.0,   21.0,    8.0,    6.0,    1.0,    0.0,   35.0,   19.0,   13.0,
    13.0,    2.0,    0.0,    0.0,   17.0,    5.0,    7.0,    1.0,    0.0,    0.0,
     0.0,   15.0,    5.0,    2.0,    2.0,    2.0,    1.0,    0.0,   51.0,   20.0,
    20.0,   18.0,   12.0,    0.0,    0.0,   37.0,   17.0,   19.0,   11.0,    8.0,
     1.0,    0.0,   28.0,   17.0,   11.0,   13.0,   19.0,    0.0,    0.0,   34.0,
    15.0,   18.0,    8.0,   14.0,    0.0,    0.0,   32.0,   17.0,   11.0,   10.0,
     4.0,    0.0,    0.0,   20.0,   17.0,    4.0,   13.0,    3.0,    0.0,    0.0,
    22.0,   22.0,   17.0,   10.0,   10.0,    2.0,    0.0,   25.0,   16.0,    7.0,
    12.0,   11.0,    0.0,    1.0,   17.0,   10.0,    6.0,    7.0,    4.0,    0.0,
     1.0,   23.0,   13.0,   10.0,    9.0,   11.0,    0.0,    0.0,   34.0,   20.0,
    10.0,   11.0,    2.0,    0.0,    0.0,   35.0,   11.0,   16.0,   11.0,    2.0,
     1.0,    0.0,   31.0,   13.0,   13.0,    9.0,    1.0,    0.0,    0.0,    0.0,
    46.0,   15.0,   13.0,   16.0,    0.0,    0.0,   46.0,   21.0,    7.0,    8.0,
     6.0,    0.0,    1.0,   42.0,   17.0,   15.0,   20.0,    9.0,    2.0,    0.0,
    41.0,   17.0,   18.0,   13.0,    8.0,    2.0,    0.0,   45.0,   18.0,   27.0,
    24.0,   10.0,    0.0,    1.0,   17.0,    8.0,   54.0,    0.0,   11.0,    1.0,
     1.0,   53.0,   18.0,   11.0,   12.0,    9.0,    0.0,    0.0,    1.0,   32.0,
    14.0,   14.0,    5.0,    0.0,    0.0,   39.0,   19.0,   16.0,    7.0,    5.0,
     1.0,    0.0,   26.0,   16.0,   16.0,   15.0,   19.0,    1.0,    0.0,   47.0,
    19.0,   13.0,   10.0,   11.0,    1.0,    0.0,   27.0,   17.0,   14.0,    8.0,
     9.0,    1.0,    0.0,   31.0,   20.0,   13.0,   10.0,   10.0,    0.0,    0.0,
    42.0,    8.0,   18.0,    6.0,    9.0,    1.0,    0.0,   34.0,   25.0,   15.0,
     9.0,    5.0,    1.0,    0.0,   40.0,   13.0,    8.0,   22.0,   12.0,    1.0,
     0.0,   25.0,   10.0,    2.0,    2.0,    4.0,    2.0,    0.0,   36.0,   10.0,
     8.0,   14.0,   11.0,    1.0,    1.0,   41.0,   18.0,   18.0,   10.0,    9.0,
     4.0,    0.0,   26.0,   12.0,   24.0,   11.0,   51.0,    1.0,    0.0,   43.0,
    13.0,    7.0,    8.0,    6.0,    0.0,    0.0,   14.0,    5.0,   15.0,    7.0,
    10.0,    1.0,    0.0,   37.0,   45.0,   19.0,   18.0,   11.0,    2.0,    0.0,
    40.0,   14.0,   12.0,   19.0,    6.0,    1.0,    1.0,   33.0,   25.0,   16.0,
    13.0,   13.0,    0.0,    0.0,   28.0,   13.0,   17.0,   14.0,    2.0,    0.0,
     0.0,   33.0,   17.0,   15.0,   18.0,    7.0,    2.0,    0.0,   35.0,   29.0,
    20.0,   13.0,    3.0,    1.0,    0.0,   28.0,   12.0,   16.0,    9.0,   20.0,
     2.0,    0.0,   37.0,   20.0,   19.0,   10.0,    4.0,    0.0,    0.0,   43.0,
    21.0,    9.0,   12.0,   46.0,    1.0,    1.0,   40.0,   22.0,   22.0,   16.0,
    12.0,    0.0,    0.0,   34.0,   14.0,   14.0,   12.0,    5.0,    0.0,    1.0,
    23.0,    7.0,    4.0,    7.0,    1.0,    0.0,    0.0,    0.0,    0.0,    1.0,
     0.0,    0.0,    0.0,    0.0,    3.0,    0.0,    0.0,    0.0,    0.0,    0.0,
     0.0,    0.0,    0.0,    2.0,    1.0,    3.0,    0.0,    0.0,    0.0,    3.0,
     4.0,    0.0,    0.0,    0.0,    0.0,    7.0,    3.0,    1.0,    6.0,    2.0,
     2.0,   11.0,  151.0,  108.0,   78.0,   76.0,   20.0,    6.0,    2.0,  249.0,
   134.0,   73.0,   30.0,   64.0,    4.0,    3.0,  214.0,  107.0,   68.0,   70.0,
    60.0,    3.0,    1.0,  233.0,  102.0,   75.0,   77.0,   73.0,    1.0,    2.0,
    72.0,  119.0,   94.0,   58.0,   13.0,    5.0,    3.0,  196.0,  102.0,   82.0,
    69.0,   63.0,    3.0,    1.0,  216.0,   86.0,  106.0,   21.0,   44.0,   11.0,
     4.0,  272.0,  113.0,   76.0,  105.0,   61.0,    4.0,    2.0,  197.0,  128.0,
    23.0,   87.0,   76.0,    2.0,    4.0,  244.0,  121.0,   95.0,   94.0,   78.0,
     1.0,    4.0,  234.0,  110.0,  106.0,   90.0,   64.0,    1.0,    3.0,  255.0,
   137.0,   99.0,   66.0,   76.0,    2.0,    1.0,  231.0,  114.0,   92.0,   78.0,
    60.0,    3.0,    0.0,  243.0,  130.0,  113.0,   83.0,   69.0,    7.0,    3.0,
   250.0,  110.0,   81.0,  101.0,   57.0,    3.0,    4.0,  207.0,   94.0,   70.0,
    43.0,    3.0,    4.0,    1.0,    5.0,  245.0,  139.0,   62.0,   56.0,    5.0,
     0.0,    7.0,  260.0,   99.0,   33.0,   20.0,    4.0,    5.0,  226.0,  111.0,
    84.0,   73.0,   43.0,    4.0,    3.0,  273.0,  107.0,   90.0,   65.0,   65.0,
     9.0,    2.0,  248.0,  121.0,  103.0,   96.0,   49.0,    3.0,    3.0,  230.0,
   116.0,   77.0,    2.0,   44.0,    4.0,    5.0,  269.0,  128.0,   90.0,   25.0,
    53.0,    6.0,    3.0,    4.0,  231.0,   97.0,  102.0,   70.0,    4.0,    4.0,
   236.0,   34.0,   80.0,   80.0,   62.0,    6.0,    5.0,  221.0,  136.0,   82.0,
   102.0,   58.0,    5.0,    3.0,  251.0,  113.0,  102.0,  101.0,   55.0,    6.0,
     5.0,  259.0,  119.0,   95.0,   85.0,   69.0,    5.0,    4.0,  206.0,  127.0,
    70.0,   88.0,   52.0,    4.0,    2.0,  200.0,   21.0,   72.0,   60.0,   56.0,
     5.0,    3.0,  175.0,   99.0,   63.0,   75.0,   13.0,    0.0,    4.0,  214.0,
    88.0,   67.0,   66.0,   18.0,    6.0,    5.0,  232.0,   93.0,   77.0,   85.0,
    62.0,    8.0,    2.0,  218.0,   93.0,   79.0,   75.0,   60.0,    8.0,    2.0,
   261.0,  113.0,   88.0,   80.0,   76.0,    6.0,    3.0,  292.0,  110.0,  111.0,
    82.0,   75.0,    9.0,    4.0,  255.0,  133.0,  130.0,   81.0,   11.0,    3.0,
     1.0,  268.0,  121.0,  100.0,   88.0,   27.0,    6.0,    1.0,  264.0,  120.0,
    83.0,   94.0,   76.0,    6.0,    4.0,  155.0,    6.0,  242.0,  127.0,   80.0,
     7.0,    3.0,  261.0,  134.0,  105.0,   97.0,   69.0,    7.0,    3.0,   88.0,
   129.0,   95.0,   87.0,   88.0,   10.0,    1.0,  242.0,  115.0,  113.0,   91.0,
    75.0,    3.0,    0.0,  146.0,    5.0,  253.0,  126.0,   87.0,   11.0,    6.0,
   258.0,  157.0,  110.0,   84.0,   92.0,    5.0,    2.0,  262.0,  135.0,   95.0,
   110.0,   68.0,    2.0,    5.0,  271.0,  144.0,  115.0,   42.0,   70.0,    8.0,
     7.0,   59.0,  118.0,   84.0,   89.0,   86.0,    5.0,    1.0,  241.0,  123.0,
    90.0,  132.0,   58.0,    6.0,    3.0,  261.0,  129.0,   82.0,   96.0,   66.0,
     4.0,    3.0,  205.0,   89.0,   65.0,   50.0,   28.0,    1.0,    1.0,    1.0,
	 1.0,   73.0,   28.0,   18.0,    2.0,    0.0 },
{   14.0,   81.0,    5.0,    7.0,  392.0,   83.0,   98.0,   57.0,   65.0,   12.0,
     4.0,  228.0,   83.0,   73.0,   74.0,   52.0,   17.0,    1.0,  173.0,   63.0,
    84.0,   78.0,   69.0,   17.0,    6.0,  196.0,   96.0,  131.0,  115.0,   67.0,
    18.0,    8.0,  216.0,  143.0,  135.0,   92.0,   74.0,   15.0,    5.0,  213.0,
    87.0,   81.0,   95.0,   60.0,   10.0,    7.0,  254.0,  110.0,   98.0,   99.0,
    71.0,   13.0,    9.0,  238.0,   96.0,   93.0,  115.0,   71.0,    8.0,    8.0,
   230.0,  116.0,   88.0,  100.0,   81.0,   18.0,    4.0,  201.0,  111.0,   88.0,
    86.0,   72.0,   15.0,   10.0,  179.0,  129.0,   99.0,   91.0,   70.0,   15.0,
     5.0,  224.0,  108.0,  105.0,   83.0,   54.0,   17.0,    4.0,  244.0,  107.0,
    92.0,   91.0,   94.0,   12.0,   10.0,  212.0,   99.0,   90.0,   41.0,    4.0,
    12.0,    4.0,    6.0,  178.0,   71.0,   63.0,   53.0,   20.0,    5.0,  234.0,
   131.0,   99.0,   99.0,   63.0,   12.0,    9.0,  286.0,  136.0,   92.0,   68.0,
    13.0,   10.0,   13.0,  331.0,  122.0,  107.0,   87.0,   55.0,   16.0,   13.0,
   299.0,  126.0,  108.0,   89.0,   74.0,   13.0,    4.0,  205.0,   80.0,   85.0,
    20.0,  113.0,   13.0,   13.0,  318.0,  116.0,   96.0,   83.0,   66.0,   17.0,
     6.0,   10.0,  255.0,  124.0,  103.0,   86.0,   19.0,   10.0,  274.0,  132.0,
   108.0,  116.0,   88.0,   23.0,   11.0,  318.0,  156.0,  100.0,  105.0,   87.0,
    16.0,   10.0,  311.0,  117.0,  124.0,  114.0,   84.0,   14.0,   10.0,  268.0,
   105.0,  125.0,  109.0,   93.0,   12.0,    7.0,  231.0,   91.0,   94.0,   81.0,
    56.0,   18.0,   12.0,  198.0,  109.0,   79.0,   95.0,   70.0,   19.0,   12.0,
   232.0,  113.0,   90.0,  110.0,   65.0,   18.0,    9.0,  210.0,   93.0,   75.0,
    90.0,   64.0,   21.0,    8.0,  244.0,   94.0,   94.0,   91.0,   68.0,   15.0,
    10.0,  275.0,  117.0,   90.0,  118.0,   86.0,   18.0,   12.0,  293.0,  138.0,
   113.0,  111.0,   91.0,   20.0,   11.0,  235.0,  119.0,  107.0,  106.0,   83.0,
    19.0,   10.0,  269.0,  122.0,  130.0,  107.0,  105.0,   18.0,   11.0,  279.0,
   136.0,  110.0,  109.0,   88.0,   23.0,    9.0,  256.0,  104.0,  111.0,   91.0,
    80.0,   14.0,   11.0,  290.0,  117.0,  104.0,  112.0,   77.0,   18.0,    5.0,
   270.0,  114.0,   99.0,   91.0,   91.0,   14.0,   10.0,  238.0,  112.0,  114.0,
    87.0,   59.0,   21.0,    7.0,  260.0,  154.0,  107.0,  113.0,   85.0,   19.0,
     9.0,  238.0,  129.0,  112.0,   92.0,   83.0,   20.0,    3.0,  267.0,  120.0,
   115.0,  109.0,   89.0,    8.0,    8.0,  251.0,  107.0,  103.0,   87.0,   96.0,
    14.0,    8.0,  240.0,  115.0,   88.0,  106.0,   82.0,   17.0,    5.0,  265.0,
   105.0,  123.0,  112.0,   93.0,   15.0,   10.0,  224.0,  118.0,  130.0,  110.0,
    87.0,   21.0,    9.0,  228.0,  120.0,  117.0,   89.0,  111.0,   14.0,   10.0,
   272.0,  141.0,   96.0,   92.0,   77.0,   12.0,    9.0,  223.0,  117.0,   94.0,
   100.0,   71.0,   15.0,   14.0,  132.0,   55.0,   40.0,   12.0,    2.0,    4.0,
     3.0,   89.0,   29.0,   28.0,   13.0,   12.0,   10.0,    9.0,  304.0,   84.0,
    94.0,  103.0,  110.0,   12.0,    5.0,  184.0,  133.0,  163.0,  100.0,   88.0,
    17.0,    3.0,  436.0,  110.0,  100.0,   76.0,   67.0,   16.0,   12.0,  203.0,
    96.0,   82.0,   95.0,   73.0,   17.0,    6.0,  204.0,  102.0,   67.0,   61.0,
    63.0,    7.0,    3.0,  186.0,  102.0,   69.0,   77.0,   75.0,   17.0,    9.0,
   211.0,  109.0,   99.0,  110.0,   80.0,   17.0,    4.0,  192.0,   76.0,   82.0,
    65.0,   44.0,   10.0,    2.0,  111.0,   43.0,   44.0,   56.0,   50.0,    9.0,
     5.0,  173.0,   87.0,   83.0,   94.0,   68.0,   11.0,    5.0,  207.0,   95.0,
    86.0,   77.0,   59.0,   13.0,    6.0,  216.0,  104.0,   91.0,   76.0,   57.0,
    15.0,   14.0,  227.0,   87.0,   64.0,   58.0,   11.0,   13.0,   12.0,    9.0,
   291.0,   87.0,   91.0,   69.0,   16.0,    9.0,  251.0,  112.0,  116.0,   89.0,
    75.0,   13.0,   11.0,  199.0,  100.0,   85.0,   89.0,   76.0,   14.0,    9.0,
   215.0,  126.0,   94.0,  119.0,   73.0,    7.0,    8.0,  288.0,  111.0,  100.0,
    89.0,   63.0,    5.0,    7.0,  203.0,   90.0,   59.0,   12.0,   93.0,   15.0,
     8.0,  274.0,  106.0,   82.0,   70.0,   49.0,   12.0,    9.0,    4.0,  297.0,
   106.0,  100.0,   87.0,   26.0,    8.0,  252.0,  105.0,   80.0,   81.0,   62.0,
    17.0,   10.0,  202.0,  103.0,   99.0,  109.0,   85.0,   21.0,    4.0,  274.0,
   115.0,  141.0,  115.0,   87.0,   11.0,    6.0,  321.0,  116.0,   81.0,   77.0,
    63.0,    9.0,   12.0,  231.0,  115.0,  106.0,   99.0,   71.0,   14.0,   16.0,
   310.0,  152.0,  105.0,  114.0,   78.0,   18.0,    8.0,  299.0,  127.0,  100.0,
    88.0,   94.0,   17.0,    7.0,  270.0,  107.0,  110.0,   94.0,   66.0,    9.0,
    10.0,  195.0,   77.0,   77.0,   74.0,   66.0,   20.0,   15.0,  218.0,  110.0,
    99.0,  108.0,   79.0,   17.0,   15.0,  245.0,  134.0,   99.0,   75.0,   81.0,
    28.0,   10.0,  271.0,   93.0,   86.0,   83.0,   82.0,   18.0,    9.0,  213.0,
    80.0,   89.0,   74.0,   34.0,   10.0,    6.0,   95.0,   41.0,   58.0,   70.0,
    70.0,   19.0,   13.0,  284.0,  125.0,  109.0,   88.0,   91.0,   16.0,   11.0,
   280.0,  141.0,  135.0,  126.0,   88.0,   26.0,    7.0,  261.0,  122.0,  112.0,
    86.0,   74.0,   14.0,    4.0,  226.0,  121.0,  105.0,  107.0,   79.0,   20.0,
    10.0,  250.0,   97.0,   81.0,   98.0,   84.0,   14.0,    5.0,  248.0,   99.0,
   104.0,   87.0,   68.0,   13.0,    7.0,  263.0,   89.0,   79.0,   78.0,   74.0,
    19.0,   12.0,  229.0,  103.0,   96.0,  110.0,   63.0,   13.0,   10.0,  251.0,
    85.0,  100.0,   88.0,   69.0,    6.0,   11.0,  244.0,   85.0,   86.0,   87.0,
    71.0,   17.0,    8.0,  211.0,  101.0,   88.0,   77.0,   59.0,   17.0,    4.0,
   155.0,   69.0,   51.0,   29.0,   10.0,    1.0,    0.0,    6.0,    0.0,    3.0,
     5.0,    2.0,    2.0,    0.0,   10.0,    5.0,    6.0,    5.0,    2.0,    2.0,
     1.0,   16.0,    9.0,    6.0,    5.0,    5.0,    3.0,    0.0,   22.0,   10.0,
     9.0,   14.0,   12.0,    3.0,    2.0,   54.0,   25.0,   32.0,   33.0,   11.0,
    18.0,    7.0,  323.0,  107.0,   68.0,   88.0,   71.0,   12.0,    4.0,  195.0,
   103.0,   88.0,   83.0,   51.0,   10.0,    7.0,  190.0,   94.0,   78.0,   59.0,
    68.0,    9.0,    5.0,  229.0,   64.0,   87.0,  106.0,   60.0,   17.0,    5.0,
   178.0,   99.0,   91.0,   97.0,   79.0,   10.0,    4.0,  170.0,   78.0,   68.0,
    75.0,   49.0,   10.0,    5.0,  172.0,  105.0,   75.0,   60.0,   60.0,   13.0,
     6.0,  204.0,   92.0,   66.0,   85.0,   58.0,   10.0,    9.0,  231.0,  100.0,
    87.0,   72.0,   73.0,    6.0,    6.0,  209.0,  102.0,   86.0,   80.0,   65.0,
    16.0,    5.0,  191.0,   89.0,   82.0,   72.0,   55.0,   14.0,    9.0,  223.0,
    91.0,   91.0,   67.0,   50.0,   11.0,    4.0,  219.0,   96.0,   68.0,   53.0,
    53.0,    9.0,    6.0,  192.0,  120.0,  103.0,   80.0,   77.0,   10.0,    7.0,
   219.0,   99.0,   85.0,   85.0,   66.0,    9.0,    6.0,  221.0,   89.0,   76.0,
    54.0,    9.0,   13.0,   13.0,    7.0,  269.0,  111.0,   99.0,   72.0,    9.0,
     9.0,   15.0,  325.0,  112.0,   80.0,   77.0,   16.0,    8.0,  248.0,  111.0,
   106.0,  106.0,   98.0,   14.0,    5.0,  271.0,  127.0,  108.0,   81.0,   58.0,
    10.0,   13.0,  249.0,  114.0,  115.0,   93.0,   71.0,   12.0,    7.0,  210.0,
    86.0,   76.0,   13.0,  106.0,   19.0,   11.0,  286.0,  115.0,   76.0,   73.0,
    73.0,   15.0,   10.0,   13.0,  266.0,  129.0,   86.0,   66.0,   14.0,    7.0,
   268.0,  122.0,  102.0,  103.0,   93.0,   16.0,    8.0,  247.0,  109.0,   69.0,
    74.0,   60.0,   18.0,    6.0,  212.0,   98.0,   82.0,   93.0,   82.0,    6.0,
     5.0,  208.0,   99.0,   73.0,   93.0,   62.0,   11.0,    7.0,  198.0,   98.0,
    86.0,   69.0,   53.0,   11.0,    8.0,  177.0,  142.0,   90.0,   75.0,   59.0,
     7.0,    7.0,  189.0,   86.0,   73.0,   73.0,   55.0,   17.0,    4.0,  196.0,
    82.0,   95.0,   71.0,   62.0,   12.0,    8.0,  208.0,   87.0,   78.0,   77.0,
    57.0,    9.0,    5.0,  198.0,  119.0,   56.0,   86.0,   76.0,   16.0,    5.0,
   251.0,   89.0,   76.0,   93.0,   87.0,   14.0,    9.0,  206.0,   79.0,   80.0,
    93.0,   79.0,    9.0,   16.0,  220.0,   96.0,   89.0,   89.0,   62.0,   14.0,
    12.0,  240.0,   94.0,   85.0,   84.0,  136.0,   10.0,   11.0,  240.0,  101.0,
    70.0,  101.0,   83.0,   16.0,   11.0,  180.0,    8.0,  197.0,   93.0,   68.0,
    10.0,    6.0,  192.0,  104.0,   77.0,   69.0,   70.0,   14.0,    4.0,  198.0,
    93.0,   96.0,   88.0,   81.0,   15.0,    9.0,  217.0,  126.0,   79.0,   93.0,
    46.0,   13.0,    1.0,  140.0,   13.0,  165.0,   82.0,   58.0,   11.0,   11.0,
   358.0,   88.0,   72.0,   84.0,   62.0,   14.0,    3.0,  220.0,   91.0,   74.0,
    86.0,   58.0,   10.0,   10.0,  182.0,   83.0,   84.0,   78.0,   43.0,   11.0,
     3.0,  184.0,  103.0,   90.0,   65.0,   71.0,   10.0,    7.0,  194.0,   83.0,
    77.0,   60.0,   60.0,   13.0,    8.0,  163.0,   88.0,   79.0,   77.0,   64.0,
     9.0,    8.0,  164.0,   55.0,   60.0,   53.0,   25.0,    5.0,    2.0,    2.0,
	1.0,   68.0,   36.0,   17.0,    9.0,    0.0 },
{    4.0,   54.0,    5.0,    5.0,   73.0,   93.0,   85.0,   65.0,   41.0,    5.0,
     4.0,  111.0,   49.0,   41.0,   23.0,   28.0,    1.0,    0.0,   97.0,   61.0,
    65.0,   17.0,   49.0,    5.0,    1.0,   49.0,   98.0,   20.0,   91.0,   59.0,
     8.0,    6.0,   55.0,  153.0,  118.0,  126.0,   92.0,   12.0,    6.0,  355.0,
   140.0,  116.0,  102.0,   61.0,   13.0,    4.0,  297.0,  104.0,  101.0,   81.0,
    51.0,    9.0,    1.0,  155.0,  102.0,   95.0,   75.0,   16.0,   10.0,    8.0,
   204.0,   87.0,   81.0,   27.0,   48.0,    8.0,    6.0,  183.0,   82.0,   98.0,
    88.0,   50.0,   15.0,    3.0,  207.0,  100.0,   92.0,   18.0,   57.0,    2.0,
     2.0,  211.0,   69.0,   81.0,   55.0,   51.0,    2.0,    4.0,  199.0,   72.0,
    26.0,   53.0,   38.0,    5.0,    3.0,  145.0,   53.0,   37.0,   25.0,    0.0,
     3.0,    1.0,    1.0,  104.0,   54.0,   17.0,   25.0,    5.0,    2.0,  100.0,
    62.0,   28.0,   41.0,   21.0,    2.0,    1.0,   96.0,   41.0,   12.0,   19.0,
     1.0,    6.0,    0.0,  117.0,   45.0,   43.0,   43.0,   20.0,    1.0,    3.0,
    64.0,   30.0,   42.0,   33.0,    3.0,    1.0,    1.0,   10.0,   27.0,   22.0,
     2.0,   20.0,    5.0,    1.0,  143.0,   16.0,   37.0,   26.0,   12.0,    0.0,
     1.0,    3.0,   73.0,   35.0,   31.0,   16.0,    3.0,    3.0,   25.0,   14.0,
    29.0,   25.0,    5.0,    3.0,    1.0,   79.0,   49.0,   38.0,   34.0,   20.0,
     5.0,    1.0,   73.0,   39.0,   38.0,   10.0,   21.0,    3.0,    2.0,   90.0,
    78.0,   41.0,   31.0,   19.0,    2.0,    2.0,   88.0,   38.0,   29.0,   21.0,
    12.0,    3.0,    1.0,   89.0,   42.0,   42.0,   39.0,   29.0,    1.0,    0.0,
    76.0,   32.0,   34.0,   21.0,    6.0,    1.0,    1.0,   87.0,   30.0,   14.0,
     9.0,    8.0,    3.0,    2.0,   92.0,   47.0,   30.0,   32.0,    1.0,    1.0,
     1.0,   78.0,   34.0,   30.0,   22.0,   16.0,    5.0,    5.0,  138.0,   42.0,
    27.0,   32.0,   21.0,    4.0,    0.0,   88.0,   32.0,   26.0,   22.0,   26.0,
     3.0,    1.0,   95.0,   43.0,   31.0,   43.0,   24.0,    3.0,    4.0,  173.0,
    19.0,   15.0,   55.0,   22.0,    5.0,    3.0,  153.0,   78.0,   22.0,   97.0,
    37.0,    4.0,    5.0,  214.0,  110.0,  112.0,   82.0,   51.0,    2.0,    2.0,
   217.0,  133.0,   98.0,   87.0,   80.0,    5.0,    4.0,  276.0,  133.0,  121.0,
   109.0,   28.0,   10.0,    1.0,   74.0,  147.0,  100.0,  113.0,   43.0,    3.0,
     4.0,  253.0,  115.0,   77.0,   77.0,   52.0,    5.0,    1.0,  186.0,  100.0,
   104.0,   22.0,   45.0,    4.0,    2.0,   48.0,   95.0,   80.0,   61.0,   38.0,
     1.0,    2.0,  207.0,  117.0,   66.0,   64.0,   32.0,    7.0,    1.0,  202.0,
   104.0,   87.0,   91.0,   17.0,    7.0,    3.0,  269.0,  132.0,  157.0,   87.0,
    59.0,    2.0,    3.0,  225.0,  107.0,  134.0,  123.0,   69.0,    5.0,    3.0,
   278.0,  133.0,  165.0,  112.0,   62.0,    3.0,    0.0,  230.0,  127.0,  108.0,
    89.0,   50.0,    6.0,    2.0,  114.0,   47.0,   20.0,    6.0,    1.0,    2.0,
     2.0,  122.0,   33.0,   28.0,    0.0,    2.0,    8.0,    4.0,  280.0,   34.0,
    89.0,   75.0,   58.0,   10.0,    1.0,  202.0,   83.0,   88.0,   77.0,   43.0,
     4.0,    2.0,  219.0,   69.0,   74.0,   73.0,   37.0,    5.0,    3.0,  235.0,
    84.0,  107.0,   84.0,   62.0,    9.0,    2.0,  234.0,   94.0,  104.0,   94.0,
    17.0,    7.0,   10.0,  258.0,   95.0,   73.0,  110.0,   74.0,    8.0,    0.0,
   411.0,  171.0,  139.0,  140.0,   97.0,    1.0,    8.0,  386.0,  162.0,  139.0,
   118.0,   66.0,    2.0,    4.0,  243.0,  100.0,   87.0,   88.0,   77.0,    6.0,
     2.0,  260.0,  324.0,  118.0,   88.0,   75.0,   10.0,   11.0,  301.0,  114.0,
   127.0,   94.0,   60.0,   10.0,    6.0,  237.0,   27.0,   90.0,   73.0,   64.0,
     4.0,    4.0,  175.0,   57.0,   66.0,   33.0,    1.0,    5.0,    1.0,    3.0,
   256.0,   73.0,   60.0,   10.0,    4.0,    0.0,   28.0,   54.0,   36.0,   37.0,
    18.0,    2.0,    1.0,  111.0,   61.0,   57.0,   32.0,   32.0,    1.0,    3.0,
    93.0,   48.0,   39.0,   16.0,   24.0,    1.0,    3.0,  103.0,   56.0,   41.0,
    67.0,   21.0,    3.0,    0.0,   84.0,   38.0,   24.0,    1.0,   26.0,    3.0,
     1.0,  131.0,   58.0,   42.0,    4.0,   17.0,    2.0,    1.0,    3.0,  102.0,
    46.0,   28.0,   20.0,    3.0,    1.0,  116.0,   34.0,   22.0,   17.0,    5.0,
     1.0,    0.0,   77.0,   36.0,   35.0,   26.0,   22.0,    2.0,    3.0,   88.0,
    35.0,    4.0,   42.0,   19.0,    0.0,    0.0,   78.0,   40.0,   27.0,   24.0,
    13.0,    2.0,    0.0,   58.0,   32.0,   42.0,   33.0,   25.0,    2.0,    3.0,
    57.0,   23.0,   34.0,   22.0,   24.0,    2.0,    1.0,   65.0,   33.0,   27.0,
    14.0,   14.0,    0.0,    0.0,   52.0,   30.0,   30.0,   16.0,    7.0,    2.0,
     1.0,  165.0,   14.0,   16.0,    8.0,   10.0,    1.0,    3.0,   46.0,   16.0,
    12.0,   13.0,    8.0,    2.0,    1.0,   52.0,   19.0,   18.0,   19.0,   13.0,
     2.0,    2.0,   46.0,   29.0,   15.0,   20.0,    9.0,    0.0,    0.0,   63.0,
    30.0,   21.0,   15.0,    7.0,    1.0,    0.0,   27.0,   12.0,   12.0,   14.0,
    20.0,    0.0,    2.0,   69.0,   36.0,   46.0,    9.0,    9.0,    1.0,    3.0,
   184.0,   67.0,   53.0,   42.0,   24.0,    3.0,    4.0,   47.0,   76.0,   69.0,
    51.0,   37.0,    5.0,    1.0,  167.0,   77.0,   66.0,   44.0,   40.0,   11.0,
     1.0,  205.0,   96.0,  109.0,   85.0,   60.0,    5.0,    2.0,  179.0,   91.0,
    84.0,  100.0,   68.0,    8.0,    5.0,  221.0,   93.0,  102.0,   83.0,   44.0,
     1.0,    1.0,  210.0,   81.0,  101.0,   68.0,   14.0,    3.0,    1.0,  166.0,
    89.0,   70.0,   54.0,   38.0,    3.0,    0.0,  166.0,   99.0,   76.0,   62.0,
    37.0,    5.0,    1.0,  196.0,  132.0,   92.0,   61.0,   26.0,    6.0,    2.0,
   143.0,   75.0,   43.0,   24.0,    3.0,    1.0,    0.0,    6.0,    3.0,    2.0,
     1.0,    1.0,    0.0,    0.0,    8.0,    4.0,    5.0,    1.0,    1.0,    0.0,
     0.0,   13.0,    4.0,    6.0,    5.0,    4.0,    0.0,    0.0,   19.0,    6.0,
     7.0,    7.0,    1.0,    0.0,    2.0,   42.0,   15.0,   14.0,   30.0,   10.0,
     6.0,    3.0,  335.0,  152.0,  116.0,   90.0,   44.0,    4.0,    3.0,  279.0,
   141.0,   99.0,   86.0,   70.0,    7.0,    4.0,  167.0,  157.0,  120.0,  139.0,
    74.0,    4.0,    7.0,  183.0,  193.0,  180.0,  149.0,   47.0,   18.0,   11.0,
   392.0,  175.0,  149.0,  107.0,   94.0,   16.0,    3.0,  171.0,  122.0,  128.0,
    89.0,   54.0,    4.0,    4.0,  360.0,  117.0,   61.0,  109.0,   52.0,   10.0,
     7.0,  246.0,   56.0,   83.0,   68.0,   56.0,    5.0,    6.0,  184.0,   88.0,
    80.0,   49.0,   46.0,    7.0,    2.0,  136.0,   88.0,   74.0,   76.0,   35.0,
     2.0,    7.0,  168.0,   63.0,   89.0,   48.0,   48.0,    7.0,    3.0,  214.0,
    82.0,   46.0,   72.0,   20.0,    0.0,    1.0,  173.0,   77.0,   58.0,   64.0,
    36.0,    6.0,    2.0,  157.0,   65.0,   66.0,   54.0,   38.0,    6.0,    0.0,
   168.0,   89.0,   43.0,   51.0,   33.0,    3.0,    4.0,  102.0,   48.0,   31.0,
    20.0,    0.0,    0.0,    0.0,    2.0,  146.0,   62.0,   37.0,   27.0,    2.0,
     0.0,    1.0,   96.0,   48.0,   26.0,   18.0,    1.0,    0.0,   86.0,   27.0,
    17.0,   37.0,   20.0,    0.0,    1.0,   37.0,   31.0,   29.0,   32.0,   15.0,
     1.0,    0.0,  115.0,   35.0,   29.0,   34.0,   29.0,    0.0,    1.0,   88.0,
    41.0,   18.0,    0.0,   16.0,    4.0,    2.0,  157.0,   61.0,   60.0,   45.0,
    30.0,    2.0,    1.0,    4.0,   95.0,   27.0,   40.0,   25.0,    4.0,    0.0,
   105.0,   46.0,   27.0,   19.0,   27.0,    1.0,    0.0,  112.0,   41.0,   47.0,
    41.0,   17.0,    1.0,    0.0,  111.0,   49.0,   29.0,   46.0,   22.0,    3.0,
     0.0,  102.0,   45.0,   42.0,   47.0,   19.0,    3.0,    2.0,   71.0,   75.0,
    25.0,   47.0,   28.0,    3.0,    1.0,   66.0,   45.0,   31.0,   15.0,   20.0,
     1.0,    2.0,   88.0,   38.0,   25.0,   27.0,   18.0,    1.0,    0.0,   72.0,
    39.0,   24.0,   24.0,   20.0,    3.0,    1.0,   71.0,   29.0,   13.0,   14.0,
    16.0,    3.0,    1.0,   78.0,   31.0,   18.0,   10.0,   16.0,    1.0,    2.0,
    62.0,   38.0,   24.0,   19.0,   11.0,    2.0,    0.0,   63.0,   30.0,   37.0,
    25.0,   23.0,    2.0,    1.0,   87.0,   41.0,   43.0,   43.0,   22.0,    1.0,
     0.0,   94.0,   64.0,   80.0,   50.0,   35.0,    4.0,    3.0,  193.0,   94.0,
    99.0,   70.0,   38.0,    7.0,    8.0,   72.0,    2.0,  117.0,   78.0,   61.0,
     9.0,    0.0,  223.0,   93.0,   84.0,   84.0,   48.0,    7.0,    2.0,  183.0,
    98.0,   79.0,   72.0,   53.0,    3.0,    2.0,  182.0,   38.0,   44.0,   55.0,
    27.0,    2.0,    1.0,  107.0,    8.0,  150.0,   85.0,   27.0,    2.0,    1.0,
   185.0,   74.0,   70.0,   36.0,   49.0,    4.0,    1.0,  179.0,   87.0,   66.0,
    68.0,   37.0,    5.0,    1.0,  218.0,  103.0,   90.0,   64.0,   21.0,    5.0,
     2.0,  158.0,   50.0,   81.0,   58.0,   24.0,    5.0,    0.0,  179.0,  107.0,
    80.0,   36.0,   49.0,    9.0,    3.0,  192.0,  103.0,   77.0,   57.0,   28.0,
     4.0,    0.0,  176.0,   78.0,   55.0,   33.0,   13.0,    1.0,    3.0,    3.0,
	 3.0,   89.0,   28.0,   35.0,    3.0,    0.0 },
{    1.0,   32.0,    3.0,    1.0,  133.0,   51.0,   54.0,   51.0,   25.0,    1.0,
     1.0,   26.0,   92.0,   43.0,   22.0,   17.0,    0.0,    0.0,   81.0,   52.0,
    51.0,  111.0,   35.0,    1.0,    2.0,  134.0,   98.0,   82.0,   68.0,   33.0,
     6.0,    2.0,  223.0,  136.0,   97.0,  142.0,   74.0,   10.0,    2.0,   50.0,
   142.0,  190.0,  129.0,    9.0,    7.0,    1.0,  252.0,   97.0,   99.0,   90.0,
    67.0,    8.0,    3.0,  279.0,  140.0,   95.0,  105.0,   63.0,    8.0,    1.0,
   221.0,  152.0,  112.0,  157.0,   65.0,    6.0,    2.0,  228.0,  108.0,  118.0,
    89.0,   62.0,    2.0,    4.0,  223.0,  118.0,   95.0,  138.0,    4.0,   12.0,
     3.0,  187.0,   87.0,   90.0,   95.0,   46.0,    2.0,    1.0,  193.0,   81.0,
    63.0,   52.0,   41.0,    4.0,    3.0,  119.0,   53.0,   51.0,   20.0,    1.0,
     0.0,    0.0,    3.0,   79.0,   28.0,   36.0,   13.0,    4.0,    0.0,   56.0,
    37.0,   34.0,   23.0,   16.0,    0.0,    1.0,   72.0,   42.0,   19.0,    8.0,
     1.0,    2.0,    1.0,   59.0,   33.0,   63.0,   23.0,   15.0,    2.0,    1.0,
    57.0,   23.0,   22.0,   15.0,    9.0,    2.0,    0.0,   34.0,   22.0,   12.0,
     0.0,    9.0,    2.0,    0.0,   99.0,   39.0,   35.0,   17.0,    9.0,    0.0,
     0.0,    0.0,   44.0,   20.0,   26.0,   11.0,    3.0,    0.0,  105.0,   35.0,
    20.0,   22.0,   27.0,    1.0,    2.0,   52.0,   31.0,   22.0,   24.0,    0.0,
     2.0,    1.0,   57.0,   23.0,   29.0,   19.0,   14.0,    2.0,    0.0,   71.0,
     6.0,   34.0,   22.0,   19.0,    2.0,    1.0,   57.0,   21.0,   23.0,   18.0,
     7.0,    2.0,    3.0,   62.0,   39.0,   21.0,   14.0,   13.0,    0.0,    0.0,
    40.0,   21.0,   15.0,   10.0,    5.0,    0.0,    0.0,   35.0,   22.0,   11.0,
    12.0,    6.0,    1.0,    1.0,   54.0,   17.0,   23.0,   16.0,    8.0,    0.0,
     0.0,   35.0,   21.0,    0.0,   11.0,   12.0,    0.0,    1.0,   52.0,   21.0,
    19.0,   15.0,   12.0,    3.0,    2.0,   52.0,   36.0,   23.0,   25.0,   21.0,
     0.0,    1.0,   38.0,   36.0,   34.0,   34.0,   17.0,    0.0,    2.0,   67.0,
    42.0,   35.0,   41.0,   29.0,    1.0,    2.0,  105.0,   57.0,   61.0,   60.0,
    33.0,    0.0,    0.0,  119.0,   72.0,   67.0,   35.0,   45.0,    8.0,    2.0,
   161.0,   82.0,  143.0,   84.0,   48.0,    2.0,    1.0,  185.0,  162.0,   76.0,
    70.0,   52.0,    2.0,    1.0,  156.0,   91.0,   79.0,   55.0,   30.0,    6.0,
     2.0,   15.0,   70.0,   72.0,   60.0,   35.0,    4.0,    0.0,  144.0,   77.0,
    61.0,   49.0,   35.0,    0.0,    1.0,  152.0,   76.0,   73.0,   42.0,   32.0,
     4.0,    2.0,  154.0,   70.0,   54.0,   91.0,   26.0,    2.0,    1.0,  165.0,
    17.0,   83.0,   65.0,   40.0,    5.0,    1.0,  246.0,   93.0,   93.0,   72.0,
    51.0,    2.0,    0.0,  164.0,  127.0,  103.0,  115.0,   64.0,    3.0,    3.0,
   259.0,  127.0,  101.0,   92.0,   70.0,   11.0,    1.0,  224.0,  127.0,   86.0,
    67.0,   60.0,    7.0,    2.0,  109.0,   41.0,   16.0,    0.0,    1.0,    1.0,
     2.0,   63.0,   29.0,   11.0,   11.0,    3.0,    5.0,    5.0,  210.0,   89.0,
    55.0,   60.0,   37.0,    7.0,    2.0,  183.0,   92.0,   10.0,   72.0,   48.0,
     2.0,    4.0,  212.0,  111.0,   82.0,   58.0,   45.0,    7.0,    0.0,  208.0,
    11.0,   94.0,   85.0,   49.0,    3.0,    2.0,  252.0,  122.0,  109.0,   95.0,
    65.0,   14.0,    3.0,  264.0,  133.0,  124.0,  165.0,   79.0,    2.0,    4.0,
   392.0,   12.0,  164.0,  174.0,  108.0,    8.0,   10.0,  477.0,  344.0,  170.0,
   136.0,   87.0,   10.0,    6.0,  357.0,  112.0,  109.0,  107.0,   91.0,    8.0,
     0.0,  360.0,   32.0,  194.0,   89.0,  104.0,   15.0,    2.0,  386.0,  170.0,
   123.0,  130.0,   62.0,    5.0,    6.0,  283.0,  117.0,    7.0,   85.0,   53.0,
     7.0,    1.0,  202.0,   62.0,   43.0,   23.0,    1.0,    2.0,    2.0,    2.0,
   153.0,   49.0,   38.0,   28.0,    3.0,    2.0,   91.0,   45.0,   43.0,   55.0,
    24.0,    4.0,    0.0,   78.0,   52.0,   36.0,   32.0,   19.0,    2.0,    4.0,
    80.0,   33.0,   32.0,   31.0,   17.0,    0.0,    1.0,   61.0,   30.0,   25.0,
    26.0,   17.0,    1.0,    0.0,   42.0,   14.0,   14.0,    1.0,    4.0,    3.0,
     1.0,   79.0,   47.0,   21.0,   20.0,   10.0,    2.0,    1.0,    6.0,   66.0,
    21.0,   24.0,    6.0,    0.0,    0.0,   44.0,   28.0,    9.0,   12.0,    5.0,
     0.0,    0.0,   49.0,   24.0,   22.0,   18.0,   12.0,    1.0,    0.0,   46.0,
    28.0,   16.0,   23.0,   13.0,    0.0,    0.0,   57.0,   30.0,   18.0,   31.0,
    13.0,    1.0,    1.0,   40.0,   23.0,   28.0,   21.0,    1.0,    0.0,    0.0,
    49.0,   29.0,   14.0,   14.0,    9.0,    0.0,    1.0,   44.0,   15.0,    2.0,
    24.0,   12.0,    1.0,    2.0,   32.0,   14.0,   15.0,   15.0,    5.0,    0.0,
     2.0,    2.0,   15.0,    4.0,    7.0,    3.0,    1.0,    0.0,   29.0,   14.0,
    19.0,   16.0,    8.0,    0.0,    0.0,    2.0,   19.0,   11.0,    6.0,    7.0,
     1.0,    1.0,   42.0,   19.0,   15.0,    2.0,   25.0,    0.0,    0.0,   55.0,
    22.0,   16.0,    9.0,    4.0,    1.0,    0.0,   16.0,    4.0,   10.0,   17.0,
     8.0,    1.0,    1.0,   46.0,   52.0,   21.0,   12.0,   18.0,    1.0,    1.0,
    60.0,   38.0,   26.0,   43.0,   18.0,    1.0,    0.0,   77.0,   47.0,   55.0,
    37.0,   24.0,    3.0,    1.0,  107.0,   57.0,   54.0,   38.0,   30.0,    2.0,
     0.0,  126.0,  101.0,   94.0,   65.0,   55.0,    5.0,    2.0,  151.0,   78.0,
    61.0,   45.0,   40.0,    4.0,    1.0,  148.0,   77.0,   90.0,   70.0,   54.0,
     3.0,    1.0,  212.0,   72.0,   54.0,   59.0,   18.0,    2.0,    0.0,  149.0,
    78.0,   47.0,   46.0,   32.0,    2.0,    2.0,  128.0,   72.0,   66.0,   51.0,
    33.0,    3.0,    0.0,   36.0,   97.0,   78.0,   67.0,   45.0,    3.0,    2.0,
   148.0,   57.0,   33.0,   14.0,    4.0,    0.0,    0.0,    6.0,    1.0,    5.0,
     1.0,    3.0,    0.0,    0.0,    9.0,    4.0,    5.0,    2.0,    1.0,    1.0,
     0.0,   11.0,    5.0,    8.0,    6.0,    4.0,    0.0,    0.0,   15.0,    9.0,
     7.0,    3.0,    0.0,    1.0,    1.0,   17.0,    7.0,    9.0,    8.0,    1.0,
     1.0,    7.0,  115.0,   58.0,   54.0,   31.0,   33.0,    4.0,    3.0,   80.0,
   110.0,   39.0,   68.0,   52.0,    2.0,    2.0,  200.0,   80.0,   86.0,   71.0,
    52.0,    5.0,    8.0,  407.0,  107.0,   81.0,  102.0,   67.0,    8.0,    0.0,
   267.0,  125.0,   85.0,  102.0,   47.0,    3.0,    3.0,  222.0,   67.0,   79.0,
    68.0,   34.0,    8.0,    2.0,  187.0,   57.0,   60.0,   59.0,   35.0,    2.0,
     4.0,  112.0,   51.0,   42.0,   39.0,   29.0,    2.0,    0.0,   74.0,   39.0,
    37.0,   28.0,   17.0,    2.0,    1.0,   87.0,   46.0,   28.0,   10.0,   10.0,
     1.0,    0.0,   66.0,   41.0,   35.0,   32.0,   17.0,    2.0,    0.0,   59.0,
    35.0,   21.0,   17.0,   12.0,    0.0,    0.0,   43.0,   15.0,   32.0,   18.0,
    12.0,    0.0,    0.0,   53.0,   22.0,   25.0,   19.0,   16.0,    1.0,    1.0,
    51.0,   26.0,   15.0,   32.0,   10.0,    1.0,    0.0,   40.0,   20.0,    7.0,
     8.0,    0.0,    1.0,    2.0,    0.0,    7.0,   15.0,   16.0,    6.0,    2.0,
     0.0,    0.0,   30.0,    5.0,    7.0,    0.0,    0.0,    0.0,   16.0,    8.0,
     0.0,    9.0,    4.0,    0.0,    0.0,   23.0,   12.0,   10.0,   11.0,    5.0,
     0.0,    0.0,   18.0,   11.0,    6.0,    9.0,    4.0,    1.0,    0.0,   64.0,
    11.0,    3.0,    0.0,    3.0,    1.0,    1.0,   32.0,   18.0,   12.0,    4.0,
     3.0,    0.0,    0.0,    1.0,   21.0,   12.0,    4.0,    7.0,    2.0,    0.0,
    25.0,    7.0,   51.0,    8.0,    0.0,    2.0,    0.0,   25.0,    7.0,   11.0,
     9.0,    9.0,    0.0,    0.0,   29.0,   10.0,   10.0,   10.0,    4.0,    0.0,
     1.0,   21.0,   13.0,   15.0,   10.0,    3.0,    0.0,    0.0,   26.0,    2.0,
    11.0,    4.0,    5.0,    1.0,    0.0,   16.0,    6.0,    6.0,    4.0,    2.0,
     1.0,    1.0,   21.0,    6.0,    7.0,   11.0,    5.0,    2.0,    1.0,   16.0,
    12.0,    9.0,    3.0,    6.0,    0.0,    2.0,   13.0,    8.0,    8.0,    2.0,
     0.0,    0.0,    0.0,   12.0,    7.0,   11.0,    6.0,    3.0,    0.0,    1.0,
    11.0,    4.0,    6.0,    4.0,    4.0,    2.0,    1.0,   14.0,    5.0,   13.0,
     5.0,    5.0,    0.0,    0.0,   26.0,   11.0,   10.0,    7.0,    4.0,    0.0,
     2.0,   40.0,   11.0,    4.0,   17.0,   11.0,    1.0,    0.0,   39.0,   21.0,
    14.0,   14.0,    7.0,    0.0,    2.0,   14.0,    1.0,   50.0,   23.0,    9.0,
     1.0,    5.0,   64.0,   20.0,   25.0,   19.0,    6.0,    0.0,    0.0,   42.0,
    30.0,   18.0,   17.0,   10.0,    0.0,    1.0,   31.0,   18.0,   21.0,   15.0,
     6.0,    1.0,    0.0,   27.0,    0.0,   33.0,    8.0,    9.0,    1.0,    1.0,
    46.0,   20.0,   16.0,   23.0,   11.0,    1.0,    2.0,   43.0,   23.0,   16.0,
    12.0,    9.0,    1.0,    1.0,   45.0,   22.0,   23.0,   15.0,    8.0,    0.0,
     1.0,   64.0,   21.0,   27.0,   19.0,   11.0,    0.0,    1.0,   46.0,   23.0,
    23.0,    3.0,   10.0,    1.0,    0.0,   40.0,   27.0,   27.0,   18.0,   13.0,
     2.0,    0.0,   40.0,   19.0,   15.0,    7.0,    2.0,    1.0,    0.0,    2.0,
	 0.0,   12.0,   17.0,    6.0,    1.0,    0.0 },
{    8.0,    9.0,    1.0,    0.0,   79.0,   38.0,   30.0,   32.0,   28.0,    0.0,
     0.0,  107.0,   66.0,   44.0,   42.0,   35.0,    1.0,    0.0,  112.0,   79.0,
    54.0,   57.0,   37.0,    4.0,    1.0,  196.0,   78.0,   63.0,   51.0,   38.0,
     2.0,    1.0,  131.0,   58.0,   48.0,   33.0,   28.0,    5.0,    1.0,  125.0,
    43.0,   45.0,   66.0,   34.0,    3.0,    1.0,  163.0,   69.0,   49.0,   66.0,
    35.0,    6.0,    0.0,  188.0,   94.0,   75.0,   56.0,   49.0,    4.0,    2.0,
   227.0,   87.0,   69.0,   67.0,   53.0,    2.0,    0.0,  208.0,   95.0,   75.0,
    83.0,   57.0,    1.0,    1.0,  245.0,   76.0,   77.0,   55.0,   41.0,    4.0,
     0.0,  207.0,   85.0,   69.0,   75.0,   55.0,    5.0,    0.0,  164.0,   52.0,
    63.0,   72.0,   28.0,    4.0,    0.0,   83.0,   30.0,   30.0,   17.0,    0.0,
     0.0,    0.0,    1.0,   99.0,   23.0,   34.0,   24.0,    2.0,    2.0,   87.0,
    46.0,   35.0,   46.0,   35.0,    1.0,    2.0,   94.0,   57.0,   44.0,   25.0,
     2.0,    4.0,    0.0,  126.0,   52.0,   33.0,   47.0,   45.0,    0.0,    0.0,
   119.0,   48.0,   41.0,   40.0,   27.0,    2.0,    1.0,  113.0,   43.0,   26.0,
     3.0,   19.0,    2.0,    0.0,  109.0,   31.0,   41.0,   29.0,   12.0,    0.0,
     1.0,    1.0,   77.0,   58.0,   44.0,   30.0,    2.0,    1.0,  108.0,   62.0,
    46.0,   60.0,   41.0,    0.0,    2.0,  122.0,   57.0,   48.0,   41.0,   42.0,
     3.0,    0.0,  132.0,   52.0,   54.0,   48.0,   42.0,    4.0,    1.0,  129.0,
    73.0,   51.0,   46.0,   30.0,    2.0,    0.0,  107.0,   61.0,   37.0,   40.0,
    19.0,    0.0,    0.0,   70.0,   37.0,   36.0,   27.0,   21.0,    1.0,    1.0,
    73.0,   37.0,   24.0,   20.0,   13.0,    2.0,    0.0,   59.0,   23.0,   24.0,
    28.0,   14.0,    0.0,    0.0,   60.0,   22.0,   18.0,   22.0,   17.0,    2.0,
     1.0,   55.0,   23.0,   18.0,   19.0,   14.0,    3.0,    0.0,   65.0,   40.0,
    30.0,   23.0,   21.0,    1.0,    1.0,   88.0,   38.0,   43.0,   36.0,   31.0,
     2.0,    2.0,  117.0,   55.0,   51.0,   46.0,   40.0,    0.0,    1.0,  169.0,
    68.0,   65.0,   68.0,   40.0,    1.0,    0.0,  176.0,   72.0,   72.0,   60.0,
    38.0,    9.0,    1.0,  181.0,   72.0,   87.0,   56.0,   41.0,    5.0,    0.0,
   185.0,   91.0,   74.0,   87.0,   51.0,    3.0,    4.0,  191.0,   90.0,   83.0,
    82.0,   40.0,    4.0,    1.0,  173.0,   87.0,   64.0,   48.0,   33.0,    4.0,
     0.0,   97.0,   48.0,   53.0,   40.0,   26.0,    5.0,    0.0,  160.0,   72.0,
    68.0,   63.0,   45.0,    2.0,    5.0,  179.0,   87.0,   85.0,   70.0,   31.0,
     2.0,    2.0,  207.0,   88.0,   80.0,   97.0,   70.0,    4.0,    0.0,  240.0,
   118.0,   85.0,   79.0,   51.0,    1.0,    1.0,  232.0,  103.0,   89.0,   92.0,
    46.0,    5.0,    1.0,  229.0,  116.0,   90.0,   83.0,   62.0,    1.0,    0.0,
   243.0,  116.0,   90.0,   82.0,   67.0,    6.0,    2.0,  232.0,  103.0,   72.0,
    76.0,   41.0,    4.0,    0.0,  117.0,   38.0,   16.0,    3.0,    1.0,    0.0,
     0.0,   32.0,    8.0,    6.0,    1.0,   13.0,    4.0,    1.0,   91.0,   57.0,
    39.0,   46.0,   32.0,    1.0,    1.0,  132.0,   81.0,   61.0,   57.0,   51.0,
     2.0,    1.0,  190.0,   77.0,   87.0,   58.0,   52.0,    1.0,    0.0,  199.0,
    91.0,   72.0,   79.0,   40.0,    1.0,    0.0,  128.0,   50.0,   43.0,   47.0,
    26.0,    2.0,    1.0,  129.0,   55.0,   38.0,   61.0,   29.0,    5.0,    0.0,
   168.0,   73.0,   76.0,   69.0,   51.0,    1.0,    0.0,  227.0,   94.0,   83.0,
    77.0,   56.0,    1.0,    0.0,  237.0,   80.0,   69.0,   74.0,   39.0,    5.0,
     1.0,  208.0,   99.0,   59.0,   69.0,   47.0,    8.0,    0.0,  209.0,   89.0,
    87.0,   70.0,   42.0,    0.0,    1.0,  173.0,   85.0,   63.0,   49.0,   31.0,
     1.0,    1.0,  110.0,   38.0,   26.0,   18.0,    2.0,    1.0,    1.0,    3.0,
    95.0,   35.0,   37.0,   28.0,    1.0,    0.0,   91.0,   48.0,   40.0,   43.0,
    28.0,    2.0,    0.0,   90.0,   44.0,   40.0,   47.0,   30.0,    2.0,    1.0,
   113.0,   51.0,   56.0,   38.0,   29.0,    1.0,    0.0,  124.0,   59.0,   40.0,
    38.0,   33.0,    2.0,    0.0,   93.0,   49.0,   41.0,    1.0,   17.0,    1.0,
     0.0,  126.0,   38.0,   38.0,   32.0,   15.0,    1.0,    0.0,    2.0,   70.0,
    56.0,   33.0,   22.0,    1.0,    2.0,   83.0,   36.0,   34.0,   46.0,   30.0,
     0.0,    0.0,  100.0,   47.0,   54.0,   46.0,   37.0,    2.0,    0.0,  129.0,
    57.0,   55.0,   43.0,   30.0,    2.0,    1.0,  129.0,   55.0,   45.0,   41.0,
    16.0,    0.0,    0.0,  106.0,   51.0,   42.0,   50.0,   24.0,    1.0,    2.0,
   127.0,   55.0,   41.0,   47.0,   26.0,    0.0,    0.0,  118.0,   37.0,   23.0,
    24.0,   21.0,    5.0,    0.0,   88.0,   18.0,   22.0,   23.0,   13.0,    0.0,
     1.0,   60.0,   22.0,   24.0,   15.0,    7.0,    3.0,    1.0,   61.0,   28.0,
    20.0,   16.0,   13.0,    2.0,    0.0,   67.0,   28.0,    7.0,    8.0,   11.0,
     1.0,    0.0,   53.0,   27.0,   16.0,   20.0,   13.0,    1.0,    1.0,   58.0,
    21.0,   15.0,   16.0,   14.0,    0.0,    0.0,   79.0,   30.0,   34.0,   24.0,
    25.0,    4.0,    1.0,  130.0,   70.0,   52.0,   43.0,   31.0,    7.0,    1.0,
   122.0,   59.0,   44.0,   56.0,   43.0,    6.0,    1.0,  144.0,   76.0,   60.0,
    52.0,   43.0,    3.0,    0.0,  151.0,   68.0,   53.0,   35.0,   42.0,    0.0,
     0.0,  140.0,   74.0,   63.0,   49.0,   37.0,    0.0,    0.0,  140.0,   62.0,
    66.0,   65.0,   51.0,    1.0,    2.0,  105.0,   44.0,   45.0,   27.0,   38.0,
     6.0,    0.0,  119.0,   44.0,   41.0,   54.0,   29.0,    1.0,    1.0,  137.0,
    66.0,   34.0,   58.0,   33.0,    2.0,    1.0,  138.0,   79.0,   63.0,   33.0,
    34.0,    2.0,    0.0,  112.0,   54.0,   43.0,   37.0,   11.0,    3.0,    0.0,
    72.0,   35.0,   35.0,   14.0,    8.0,    0.0,    1.0,   15.0,    8.0,    9.0,
     7.0,    6.0,    0.0,    0.0,   27.0,   11.0,   19.0,   13.0,   13.0,    1.0,
     0.0,   49.0,   31.0,   27.0,   15.0,   21.0,    1.0,    1.0,   57.0,   18.0,
    25.0,    6.0,    3.0,    1.0,    1.0,   22.0,   13.0,    6.0,    3.0,    2.0,
     6.0,    1.0,  118.0,   46.0,   48.0,   47.0,   32.0,    2.0,    1.0,  145.0,
    65.0,   83.0,   69.0,   50.0,    2.0,    0.0,  174.0,   80.0,   87.0,   75.0,
    47.0,    4.0,    0.0,  216.0,   93.0,  117.0,   64.0,   51.0,    3.0,    0.0,
   206.0,  105.0,   66.0,   71.0,   41.0,    5.0,    0.0,  153.0,   55.0,   49.0,
    40.0,   31.0,    9.0,    1.0,  112.0,   47.0,   50.0,   30.0,   23.0,    5.0,
     0.0,  132.0,   36.0,   55.0,   40.0,   37.0,    2.0,    1.0,  145.0,   53.0,
    69.0,   64.0,   42.0,    1.0,    1.0,  171.0,   82.0,   65.0,   58.0,   36.0,
     2.0,    0.0,  181.0,   86.0,   49.0,   71.0,   45.0,    0.0,    1.0,  183.0,
    56.0,   49.0,   57.0,   28.0,    1.0,    1.0,  158.0,   69.0,   58.0,   54.0,
    32.0,    5.0,    2.0,  143.0,   73.0,   54.0,   65.0,   34.0,    4.0,    1.0,
   149.0,   69.0,   64.0,   63.0,   28.0,    4.0,    1.0,   92.0,   45.0,   39.0,
    25.0,    4.0,    0.0,    0.0,    0.0,  112.0,   50.0,   25.0,   25.0,    4.0,
     0.0,    1.0,  109.0,   50.0,   25.0,   30.0,    0.0,    1.0,  102.0,   42.0,
    32.0,   44.0,   30.0,    1.0,    0.0,  128.0,   53.0,   37.0,   48.0,   30.0,
     2.0,    1.0,  149.0,   59.0,   43.0,   59.0,   20.0,    1.0,    0.0,  115.0,
    45.0,   32.0,    1.0,   22.0,    1.0,    0.0,  111.0,   57.0,   47.0,   48.0,
    32.0,    2.0,    1.0,    0.0,  113.0,   71.0,   41.0,   29.0,    3.0,    0.0,
   112.0,   53.0,   43.0,   45.0,   29.0,    2.0,    1.0,  120.0,  101.0,   57.0,
    50.0,   29.0,    3.0,    1.0,  107.0,   56.0,   49.0,   57.0,   24.0,    2.0,
     0.0,  110.0,   53.0,   37.0,   39.0,   32.0,    2.0,    0.0,   98.0,   38.0,
    44.0,   25.0,   23.0,    1.0,    0.0,   60.0,   31.0,   17.0,   18.0,   12.0,
     1.0,    0.0,   44.0,   20.0,   17.0,    9.0,   16.0,    0.0,    0.0,   45.0,
    16.0,   15.0,   12.0,   13.0,    3.0,    0.0,   57.0,   22.0,   16.0,   19.0,
     5.0,    0.0,    1.0,   47.0,   29.0,   17.0,   21.0,    8.0,    1.0,    0.0,
    54.0,   22.0,   13.0,   17.0,   18.0,    2.0,    0.0,   74.0,   42.0,   36.0,
    32.0,   32.0,    1.0,    0.0,  119.0,   45.0,   57.0,   48.0,   33.0,    3.0,
     1.0,  139.0,   66.0,   45.0,   50.0,   36.0,    3.0,    2.0,  144.0,   59.0,
    77.0,   43.0,   29.0,    3.0,    0.0,   64.0,    3.0,  166.0,   54.0,   36.0,
     3.0,    0.0,   88.0,   70.0,   45.0,   39.0,   36.0,    3.0,    2.0,  120.0,
    70.0,   50.0,   45.0,   37.0,    3.0,    0.0,   98.0,   32.0,   37.0,   34.0,
    15.0,    0.0,    0.0,   56.0,    0.0,  115.0,   28.0,   31.0,    2.0,    1.0,
   108.0,   57.0,   56.0,   51.0,   33.0,    4.0,    1.0,  151.0,   64.0,   65.0,
    68.0,   46.0,    1.0,    1.0,  161.0,   71.0,   66.0,   59.0,   37.0,    3.0,
     0.0,  158.0,   66.0,   51.0,   62.0,   48.0,    2.0,    0.0,  148.0,   77.0,
    44.0,   64.0,   41.0,    2.0,    3.0,  138.0,   73.0,   65.0,   48.0,   47.0,
     6.0,    1.0,  130.0,   50.0,   37.0,   32.0,   12.0,    0.0,    0.0,    3.0,
	 1.0,   29.0,   13.0,    7.0,    1.0,    0.0 },
{    5.0,   20.0,    2.0,    2.0,  210.0,   42.0,   46.0,   30.0,   25.0,    1.0,
     1.0,   65.0,   29.0,   25.0,   34.0,   16.0,    1.0,    1.0,   51.0,   39.0,
    32.0,   28.0,   28.0,    4.0,    2.0,  158.0,   35.0,   34.0,   31.0,   18.0,
     3.0,    1.0,   61.0,   40.0,   23.0,   12.0,   20.0,    0.0,    1.0,   68.0,
    25.0,   33.0,   35.0,   82.0,    1.0,    0.0,   79.0,   40.0,   29.0,   26.0,
    20.0,    2.0,    1.0,   75.0,   32.0,   32.0,   32.0,   27.0,    0.0,    1.0,
    57.0,   38.0,   29.0,   35.0,   17.0,    1.0,    3.0,   76.0,   42.0,   39.0,
    22.0,   18.0,    0.0,    0.0,   24.0,   27.0,   35.0,   32.0,   20.0,    2.0,
     0.0,   77.0,   39.0,   27.0,   26.0,   22.0,    3.0,    0.0,   78.0,   41.0,
    34.0,   20.0,   24.0,    1.0,    1.0,   60.0,   32.0,   16.0,    3.0,    0.0,
     0.0,    0.0,    0.0,   73.0,    8.0,   26.0,    6.0,    1.0,    0.0,   82.0,
    35.0,   36.0,   35.0,   28.0,    0.0,    1.0,   66.0,   11.0,   36.0,   15.0,
     2.0,    3.0,    1.0,   82.0,   49.0,   18.0,   32.0,   19.0,    1.0,    1.0,
    78.0,   38.0,   28.0,   31.0,   15.0,    1.0,    1.0,   40.0,   37.0,   21.0,
     0.0,   13.0,    2.0,    0.0,   90.0,   45.0,   36.0,   36.0,   13.0,    0.0,
     1.0,    0.0,   60.0,   46.0,   35.0,   29.0,    2.0,    1.0,   73.0,   45.0,
    22.0,   44.0,   14.0,    0.0,    2.0,   83.0,   32.0,   32.0,   30.0,   30.0,
     2.0,    1.0,   77.0,   31.0,   44.0,   30.0,   17.0,    4.0,    2.0,   80.0,
    36.0,   35.0,   31.0,   22.0,    0.0,    0.0,   78.0,   42.0,   27.0,   39.0,
    21.0,    2.0,    0.0,   57.0,   36.0,   32.0,   27.0,   20.0,    2.0,    1.0,
    65.0,    4.0,   26.0,   17.0,   14.0,    0.0,    0.0,   62.0,   24.0,   27.0,
    19.0,   18.0,    0.0,    0.0,   90.0,   29.0,   32.0,   33.0,   17.0,    1.0,
     1.0,   78.0,   51.0,   25.0,   28.0,   42.0,    1.0,    2.0,   94.0,   43.0,
    38.0,   26.0,   73.0,    1.0,    2.0,   93.0,   47.0,   35.0,   32.0,   22.0,
     2.0,    0.0,   84.0,   48.0,   43.0,   40.0,   18.0,    1.0,    0.0,   93.0,
    49.0,   50.0,   26.0,   23.0,    1.0,    1.0,  111.0,   52.0,   32.0,   33.0,
    38.0,    0.0,    2.0,   89.0,   39.0,   11.0,   39.0,   34.0,    3.0,    0.0,
    79.0,   42.0,   24.0,   42.0,   24.0,    0.0,    1.0,   93.0,   41.0,   29.0,
    32.0,   26.0,    1.0,    1.0,   84.0,   50.0,   26.0,   26.0,   18.0,    1.0,
     1.0,   79.0,   42.0,   42.0,   18.0,   24.0,    4.0,    1.0,   95.0,   55.0,
    34.0,   29.0,   16.0,    1.0,    1.0,   30.0,   58.0,   45.0,   33.0,   20.0,
     4.0,    0.0,   90.0,   44.0,   42.0,   40.0,   18.0,    2.0,    0.0,   92.0,
    56.0,   35.0,   39.0,   36.0,    1.0,    1.0,   71.0,   51.0,   53.0,   39.0,
    24.0,    2.0,    1.0,   85.0,   44.0,   34.0,   22.0,   23.0,    1.0,    2.0,
    71.0,   45.0,   40.0,   35.0,   14.0,    0.0,    1.0,   87.0,   43.0,   31.0,
    39.0,   16.0,    1.0,    1.0,   58.0,   24.0,    7.0,    1.0,    1.0,    0.0,
     0.0,   39.0,   19.0,    5.0,    1.0,    4.0,    0.0,    1.0,  121.0,   47.0,
    45.0,   39.0,   20.0,    1.0,    3.0,   93.0,   43.0,   39.0,   49.0,   35.0,
     1.0,    0.0,   84.0,   62.0,   38.0,   43.0,   29.0,    4.0,    1.0,   39.0,
    47.0,   47.0,   36.0,   32.0,    0.0,    0.0,   91.0,   32.0,   10.0,   28.0,
    22.0,    0.0,    1.0,   25.0,   34.0,    6.0,   39.0,   33.0,    1.0,    1.0,
    31.0,   40.0,   40.0,   31.0,   22.0,    1.0,    0.0,   69.0,   48.0,   40.0,
    27.0,   19.0,    0.0,    1.0,   32.0,    9.0,   10.0,   21.0,   22.0,    1.0,
     1.0,   24.0,   40.0,   25.0,   38.0,   35.0,    1.0,    0.0,   84.0,   30.0,
    39.0,   51.0,   28.0,    0.0,    2.0,   71.0,   42.0,   30.0,   36.0,   18.0,
     0.0,    0.0,   84.0,   42.0,   21.0,   20.0,    0.0,    0.0,    1.0,    0.0,
   120.0,   57.0,   33.0,   21.0,    0.0,    0.0,   91.0,   35.0,   32.0,   24.0,
    33.0,    1.0,    0.0,   77.0,   25.0,   30.0,   27.0,   23.0,    2.0,    3.0,
    84.0,   53.0,   35.0,   42.0,   28.0,    2.0,    1.0,   97.0,   29.0,   61.0,
    34.0,   18.0,    0.0,    1.0,   68.0,   23.0,   20.0,    3.0,   18.0,    2.0,
     3.0,  132.0,   48.0,   25.0,   31.0,   21.0,    1.0,    0.0,    1.0,   97.0,
    46.0,   42.0,   16.0,    1.0,    0.0,   75.0,   37.0,   23.0,   29.0,   22.0,
     0.0,    3.0,   66.0,   60.0,   32.0,   29.0,   24.0,    0.0,    0.0,   91.0,
    45.0,   39.0,   27.0,   16.0,    2.0,    1.0,   90.0,   42.0,   28.0,   37.0,
    36.0,    1.0,    1.0,   75.0,   35.0,   39.0,   35.0,   29.0,    0.0,    1.0,
    98.0,   41.0,   36.0,    8.0,   12.0,    1.0,    0.0,   71.0,   37.0,   37.0,
    32.0,    7.0,    4.0,    0.0,   68.0,   20.0,   24.0,   35.0,   14.0,    3.0,
     2.0,   37.0,   28.0,   17.0,   15.0,   14.0,    0.0,    2.0,   78.0,   34.0,
    12.0,   19.0,   15.0,    5.0,    1.0,   99.0,   26.0,   29.0,   30.0,   27.0,
     3.0,    1.0,   87.0,   45.0,   26.0,   27.0,   21.0,    0.0,    1.0,   83.0,
    28.0,   30.0,   16.0,   10.0,    2.0,    0.0,   30.0,   17.0,   18.0,   17.0,
    20.0,    2.0,    2.0,   51.0,   39.0,   32.0,   35.0,   23.0,    2.0,    1.0,
    96.0,   44.0,   47.0,   37.0,   21.0,    0.0,    0.0,  115.0,   49.0,   48.0,
    33.0,   37.0,    1.0,    1.0,   92.0,   52.0,   23.0,   14.0,   31.0,    2.0,
     2.0,   75.0,   36.0,   23.0,   35.0,   24.0,    4.0,    1.0,   86.0,   50.0,
    35.0,   36.0,   32.0,    3.0,    0.0,   93.0,   32.0,   35.0,   26.0,   16.0,
     0.0,    0.0,   99.0,   52.0,   32.0,   33.0,   24.0,    1.0,    0.0,   87.0,
    39.0,   26.0,   59.0,   20.0,    0.0,    2.0,   81.0,   42.0,   38.0,   30.0,
    22.0,    4.0,    2.0,   68.0,   46.0,   34.0,   34.0,   18.0,    2.0,    0.0,
    56.0,   37.0,   17.0,   18.0,    3.0,    0.0,    0.0,    7.0,    3.0,    2.0,
     1.0,    0.0,    0.0,    0.0,    7.0,    3.0,    3.0,    2.0,    2.0,    0.0,
     0.0,    9.0,    5.0,    4.0,    7.0,    4.0,    0.0,    0.0,   16.0,    3.0,
     3.0,    2.0,    0.0,    0.0,    1.0,   11.0,    7.0,    6.0,    8.0,    3.0,
     3.0,    1.0,  112.0,   78.0,   47.0,   36.0,   36.0,    1.0,    0.0,   97.0,
    44.0,   36.0,   81.0,   33.0,    2.0,    0.0,   99.0,   32.0,   27.0,   33.0,
    25.0,    2.0,    0.0,   77.0,   44.0,   45.0,   32.0,   30.0,    1.0,    1.0,
    84.0,   45.0,   31.0,   33.0,   30.0,    0.0,    2.0,   77.0,   16.0,   35.0,
    30.0,   23.0,    1.0,    1.0,   75.0,   10.0,   39.0,   13.0,   27.0,    1.0,
     1.0,  105.0,   47.0,   31.0,   39.0,   30.0,    3.0,    1.0,   69.0,   47.0,
    35.0,   39.0,   38.0,    2.0,    0.0,   85.0,   59.0,   42.0,   45.0,   29.0,
     2.0,    2.0,  107.0,   58.0,   42.0,   36.0,   18.0,    0.0,    0.0,   61.0,
    32.0,   36.0,   25.0,   24.0,    0.0,    0.0,   85.0,   32.0,   18.0,   43.0,
    23.0,    4.0,    2.0,   96.0,   40.0,   32.0,   31.0,   20.0,    1.0,    0.0,
    74.0,   31.0,   39.0,   31.0,   21.0,    2.0,    0.0,   78.0,   30.0,   19.0,
    20.0,    3.0,    2.0,    0.0,    1.0,   92.0,   60.0,   38.0,   24.0,    0.0,
     0.0,    0.0,   99.0,   43.0,   31.0,   25.0,    2.0,    1.0,   78.0,   38.0,
    33.0,   32.0,   32.0,    1.0,    0.0,   87.0,   24.0,   41.0,   48.0,   26.0,
     0.0,    1.0,   85.0,   32.0,   86.0,   39.0,   11.0,    0.0,    1.0,   79.0,
    71.0,   22.0,    2.0,    9.0,    2.0,    1.0,   95.0,   56.0,   35.0,   36.0,
    23.0,    2.0,    0.0,    0.0,   85.0,   63.0,   38.0,   11.0,    2.0,    0.0,
    89.0,   50.0,   33.0,   31.0,   24.0,    2.0,    0.0,   86.0,   58.0,   35.0,
    29.0,   23.0,    3.0,    0.0,   99.0,   65.0,   37.0,   27.0,   20.0,    3.0,
     0.0,  114.0,   42.0,   38.0,   35.0,   13.0,    0.0,    1.0,   32.0,   44.0,
    33.0,   26.0,   21.0,    3.0,    1.0,   25.0,   28.0,   21.0,   32.0,   11.0,
     2.0,    0.0,   68.0,   15.0,   14.0,   20.0,   10.0,    1.0,    2.0,   57.0,
    16.0,   31.0,   22.0,   15.0,    1.0,    1.0,   67.0,   10.0,   26.0,   28.0,
    14.0,    0.0,    0.0,   80.0,   30.0,   22.0,   38.0,   24.0,    1.0,    3.0,
    75.0,   35.0,   26.0,   26.0,   18.0,    1.0,    2.0,   75.0,   34.0,   50.0,
    28.0,   27.0,    2.0,    2.0,   77.0,   50.0,   31.0,   33.0,   28.0,    3.0,
     0.0,   80.0,   46.0,   33.0,   38.0,   17.0,    2.0,    0.0,   71.0,   43.0,
    42.0,   37.0,   27.0,    1.0,    2.0,   40.0,    1.0,   78.0,   42.0,   13.0,
     1.0,    2.0,   94.0,   29.0,   49.0,   29.0,   23.0,    0.0,    1.0,   94.0,
    48.0,   35.0,   24.0,   30.0,    1.0,    2.0,   94.0,   66.0,   39.0,    7.0,
    17.0,    0.0,    1.0,   32.0,    5.0,   70.0,   52.0,   35.0,    1.0,    0.0,
    87.0,   36.0,   17.0,   35.0,   18.0,    1.0,    2.0,   94.0,   53.0,   43.0,
    37.0,   34.0,    0.0,    0.0,   92.0,   48.0,   44.0,   45.0,   28.0,    1.0,
     0.0,  111.0,   33.0,   42.0,   37.0,   29.0,    2.0,    2.0,  115.0,   47.0,
    36.0,   13.0,   30.0,    3.0,    1.0,   76.0,   48.0,   39.0,   35.0,   15.0,
     0.0,    0.0,   73.0,   14.0,   30.0,   16.0,    5.0,    2.0,    0.0,    1.0,
	 1.0,   20.0,    5.0,    7.0,    2.0,    0.0 }
    };
    
    private final boolean aa = false;

    private double max = 850;
    private int numData = data[0].length;

    private Color colors[] = { Color.RED, Color.BLUE, Color.YELLOW, Color.BLACK, Color.WHITE, Color.GRAY, Color.GREEN };

    private Point2D.Double cP; //centerPoint;
    private int rad;  //radius
    private int numFeat; //Anzahl der Merkmale
    private int numVal;  //anzahl der Werte auf Achse
    private int offVal;  //offSet im Datenfeld
    private int innerOff; //offSet im offSet
    private boolean numValSwitch;

    private int winkel; //Rotationswinkel des Rades

    private GeneralPath wheel;

    private GeneralPath plots[];
    private Line2D.Double starLines[];
    private Ellipse2D.Double circles[];
    private Ellipse2D.Double marks[];

    private Line2D.Double avgLines[];
    private Line2D.Double curAvgLines[];
    private GeneralPath avgMarks[];

    private Line2D.Double timeAxis;
    private Line2D.Double innerAxis;

    private BasicStroke plotStroke;

    private Rotator rotL;
    private Rotator rotR;

    private Zoomer zoomP;
    private Zoomer zoomM;

    private Shifter shiftL;
    private Shifter shiftR;

    private Scroller scroll;

    private InnerScroller innerScroll;

    public TimeWheel2() {

	rad = 0;
	numFeat = 7;
	numVal = 50;
	offVal = 20;
	innerOff = 5;
	numValSwitch = false;

	cP = new Point2D.Double();
	wheel = new GeneralPath();
	plots = new GeneralPath[20];
	starLines = new Line2D.Double[20];
	circles = new Ellipse2D.Double[20];
	marks = new Ellipse2D.Double[20];
	avgLines = new Line2D.Double[40];
	avgMarks = new GeneralPath[40];
	curAvgLines = new Line2D.Double[20];

	for ( int i = 0; i < 20; i++ ) {
	    plots[i] = new GeneralPath();
	    starLines[i] = new Line2D.Double();
	    circles[i] = new Ellipse2D.Double();
	    marks[i] = new Ellipse2D.Double();
	    avgLines[i*2] = new Line2D.Double();
	    avgLines[i*2 + 1] = new Line2D.Double();

	    avgMarks[i*2] = new GeneralPath();
	    avgMarks[i*2 + 1] = new GeneralPath();

	    curAvgLines[i] = new Line2D.Double();
	}

	plotStroke = new BasicStroke(1,BasicStroke.CAP_SQUARE,BasicStroke.JOIN_BEVEL);

	setLayout(null);
	rotL = new Rotator(true);
	rotR = new Rotator(false);
	add(rotL);
	add(rotR);
	moveToFront(rotL);
	moveToFront(rotR);

	zoomP = new Zoomer(true);
	zoomM = new Zoomer(false);
	add(zoomP);
	add(zoomM);
	moveToFront(zoomP);
	moveToFront(zoomM);

	shiftL = new Shifter(true);
	shiftR = new Shifter(false);
	add(shiftL);
	add(shiftR);
	moveToFront(shiftL);
	moveToFront(shiftR);

	scroll = new Scroller();
	add(scroll);
	moveToFront(scroll);

	innerScroll = new InnerScroller();
	add(innerScroll);
	moveToFront(innerScroll);

	timeAxis = new Line2D.Double();
	innerAxis = new Line2D.Double();

	setPreferredSize(new Dimension(400,400));

	addMouseListener(this);
	
	reLayout();
	repaint();
    }

    public void setBounds(int x, int y, int w, int h) {
	super.setBounds(x,y,w,h);
	reLayout();
    }

    public void incNumVal() {
	if ( numVal < numData ) {
	    numVal++;
	    if ( offVal+numVal > numData ) {
		offVal = numData - numVal;
	    }
	    else {
		if ( numValSwitch ) {
		    decOffset();
		}
		numValSwitch = ! numValSwitch;
	    }
	}
    }

    public void decNumVal() {
	if ( numVal > 2 ) {
	    numVal--;
	    if ( numValSwitch ) {
		incOffset();
	    }
	    numValSwitch = ! numValSwitch;

	    if ( innerOff > numVal-1 ) { decInnerOffset(); }
	}
    }

    public void incOffset() {
	if ( offVal+numVal < numData ) {
	    offVal++;
	}
    }

    public void decOffset() {
	if ( offVal > 0 ) {
	    offVal--;
	}
    }

    public void setOffset(int ofs) {
	if ( ofs < 0 ) { ofs = 0; }
	if ( ofs+numVal > numData ) { ofs = numData-numVal; }
	offVal = ofs;
    }

    public void incInnerOffset() {
	if ( innerOff < numVal-1 ) {
	    innerOff++;
	}
    }

    public void decInnerOffset() {
	if ( innerOff > 0 ) {
	    innerOff--;
	}
    }

    public void setInnerOffset(int ofs) {
	if ( ofs < 0 ) { ofs = 0; }
	if ( ofs > numVal-1 ) { ofs = numVal-1; }
	innerOff = ofs;
    }

    public void reLayout() {
	

	//System.out.println(numVal+" "+offVal+" "+innerOff);

	int w = getWidth();
	int h = getHeight();
	cP.setLocation((double) w/2, (double) h/2);
	rad = ( w < h ) ? w/2 : h/2;
	int rad2 = rad;
	rad *= 0.5;

	double scale = rad/max;

	int rS = rad/4;
	rotL.setSize(rS, rS);
	rotR.setSize(rS, rS);
	rotL.setLocation((int)(cP.x-rad2),(int)(cP.y-rad2));
	rotR.setLocation((int)(cP.x+rad2-rS),(int)(cP.y-rad2));

	zoomP.setSize(rS, rS);
	zoomM.setSize(rS, rS);
	zoomP.setLocation((int)(cP.x-rad2),(int)(cP.y-rS/2));
	zoomM.setLocation((int)(cP.x+rad2-rS),(int)(cP.y-rS/2));

	shiftL.setSize(rS, rS);
	shiftR.setSize(rS, rS);
	shiftL.setLocation((int)(cP.x-rad2),(int)(cP.y+rad2-rS));
	shiftR.setLocation((int)(cP.x+rad2-rS),(int)(cP.y+rad2-rS));

	Point2D.Double timePoint0 = new Point2D.Double(cP.x - rad2 + rS, cP.y+rad2-rS/2);
	Point2D.Double timePoint1 = new Point2D.Double(cP.x + rad2 - rS, cP.y+rad2-rS/2);
	timeAxis.setLine(timePoint0, timePoint1);


	double t = (2*rad2-2*rS)/(double)numData;
	scroll.setBounds((int) (timePoint0.getX()+t*offVal), (int)(timePoint0.getY()-(rS/4.0)), (int)(numVal*t), (int) Math.round(rS/2.0));

	double wStep = 360.0/numFeat;
	double wStep2 = wStep/2.0;

	double len = 2.0*(double)rad*Math.sin(Math.toRadians(wStep2));
	double dX = ((double)w - len)/2.0;
	double dY = 2.0*(double)rad*Math.cos(Math.toRadians(wStep2));
	dY = ((double)h-dY)/2.0;

	innerAxis.setLine(cP.x - len/2,cP.y+rad2-rS,cP.x + len/2,cP.y+rad2-rS);

	t = len/(double)(numVal-1);
	innerScroll.setBounds((int) (innerAxis.x1 + t*(double)innerOff - rS/4.0), (int)(innerAxis.y1-(rS/4.0)),
			      (int) (rS/2.0), (int) (rS/2.0));


	double dx,dy,le;
	wheel.reset();
	double wi = winkel;
	Line2D.Double l;
	Point2D.Double p = new Point2D.Double(rad*Math.cos(Math.toRadians(wi)),
					      rad*Math.sin(Math.toRadians(wi)) );
	
	for ( int i = 0; i < numFeat; i++ ) {

	    wi += wStep;
	    Point2D.Double q = new Point2D.Double(rad*Math.cos(Math.toRadians(wi)),
						  rad*Math.sin(Math.toRadians(wi)) );
	    
	    l = new Line2D.Double(p,q);

	    
	    dx = q.x-p.x;
	    dy = q.y-p.y;
	    le = Math.sqrt(dx*dx+dy*dy);
	    dx /= le;
	    dy /= le;
 	    dx *= max*scale;
 	    dy *= max*scale;

	    avgLines[i*2].setLine(p.x+cP.x, p.y+cP.y,
				  p.x+cP.x+dy, p.y+cP.y-dx);

	    avgLines[i*2 + 1].setLine(q.x+cP.x, q.y+cP.y,
				      q.x+cP.x+dy, q.y+cP.y-dx);
	    
	    p = q;

	    wheel.append(l,true);
	}

	wheel.closePath();

	AffineTransform at = new AffineTransform();
	at.translate(cP.x,cP.y);
	wheel.transform(at);


	wi = winkel + wStep/2;

	for ( int i = 0; i < numFeat; i++ ) {
	    starLines[i].x1 = cP.x;
	    starLines[i].y1 = cP.y;

	    double sL = (data[i%7][offVal+innerOff]/max)*rad*0.8;

	    starLines[i].x2 = sL*Math.cos(Math.toRadians(wi)) + cP.x;
	    starLines[i].y2 = sL*Math.sin(Math.toRadians(wi)) + cP.y;

	    circles[i].setFrameFromCenter(cP.x, cP.y, cP.x-sL, cP.y-sL);

	    wi += wStep;
	}

	double alpha = winkel;
	double beta = winkel+(180+wStep)/2;
	for ( int f = 0; f < numFeat; f++ ) {

	    plots[f].reset();
	
	    double xStep = len/(numVal-1);
	    double x = 0;
	    double y = 0;
	    p = new Point2D.Double(rad*Math.cos(Math.toRadians(alpha)),
				   rad*Math.sin(Math.toRadians(alpha)) );
	    
	    for ( int i = 0; i < numVal; i++ ) {

		y = -data[f%7][offVal+i] * scale;
	    
		Point2D.Double q = new Point2D.Double(x*Math.cos(Math.toRadians(beta)) - y*Math.sin(Math.toRadians(beta)),
						      x*Math.sin(Math.toRadians(beta)) + y*Math.cos(Math.toRadians(beta)) );
		q.x += p.x;
		q.y += p.y;
		
		if ( i == 0 ) { plots[f].moveTo((float)q.x,(float)q.y); }
		else { plots[f].lineTo((float)q.x,(float)q.y); }

		if ( i == innerOff ) {
		    marks[f].setFrameFromCenter(cP.x+q.x, cP.y+q.y, cP.x+q.x - rS/6, cP.y+q.y - rS/6);
		}

		x += xStep;
	    }
	    plots[f].transform(at);
	    
	    alpha += wStep;
	    beta += wStep;

	    double value, pastAvg, futureAvg,markScale, curAvg;
	    int index,num;

	    //
	    // Calculate Past Statistics
	    //
	    pastAvg = 0;
	    index = offVal-1;
	    num = 0;
	    while ( (index >= 0) && (num <= numVal) ) {
		pastAvg += data[f%7][index];
		index--;
		num++;
	    }
	    if ( num != 0 ) { pastAvg /= num; }
	    else { pastAvg = 0; }

	    //
	    // Calculate Future Statistics
	    //
	    futureAvg = 0;
	    index = offVal+numVal+1;
	    num = 0;
	    while ( (index < numData) && (num <= numVal) ) {
		futureAvg += data[f%7][index];
		index++;
		num++;
	    }
	    if ( num != 0 ) { futureAvg /= num; }
	    else { futureAvg = 0; }

	    //
	    // Calculate Current Statistics
	    //
	    curAvg = 0;
	    index = offVal;
	    num = 0;
	    while ( (index < numData) && (num <= numVal) ) {
		curAvg += data[f%7][index];
		index++;
		num++;
	    }
	    if ( num != 0 ) { curAvg /= num; }
	    else { curAvg = 0; }

	    //
	    // Calculate Past Marks
	    //
	    avgMarks[f*2].reset();
	    dx = avgLines[f*2].x2-avgLines[f*2].x1;
	    dy = avgLines[f*2].y2-avgLines[f*2].y1;
	    double mx = dy*0.05;
	    double my = -dx*0.05;
	    double rx = dx*0.05;
	    double ry = dy*0.05;
	    markScale = pastAvg/max;
	    dx *= markScale;
	    dy *= markScale;
	    avgMarks[f*2].moveTo((float)(avgLines[f*2].x1+dx), (float)(avgLines[f*2].y1+dy));
	    avgMarks[f*2].lineTo((float)(avgLines[f*2].x1+dx+mx-rx), (float)(avgLines[f*2].y1+dy+my-ry));
	    avgMarks[f*2].lineTo((float)(avgLines[f*2].x1+dx+mx+rx), (float)(avgLines[f*2].y1+dy+my+ry));
	    avgMarks[f*2].closePath();

	    //
	    // Calculate Future Marks
	    //
	    avgMarks[f*2 + 1].reset();
	    dx = avgLines[f*2 + 1].x2-avgLines[f*2 + 1].x1;
	    dy = avgLines[f*2 + 1].y2-avgLines[f*2 + 1].y1;
	     mx = dy*0.05;
	     my = -dx*0.05;
	     rx = dx*0.05;
	     ry = dy*0.05;
	    markScale = futureAvg/max;
	    dx *= markScale;
	    dy *= markScale;
	    avgMarks[f*2 + 1].moveTo((float)(avgLines[f*2 + 1].x1+dx), (float)(avgLines[f*2 + 1].y1+dy));
	    avgMarks[f*2 + 1].lineTo((float)(avgLines[f*2 + 1].x1+dx-mx-rx), (float)(avgLines[f*2 + 1].y1+dy-my-ry));
	    avgMarks[f*2 + 1].lineTo((float)(avgLines[f*2 + 1].x1+dx-mx+rx), (float)(avgLines[f*2 + 1].y1+dy-my+ry));
	    avgMarks[f*2 + 1].closePath();

	    //
	    // Calculate curAvgLines
	    //
	    dx = avgLines[f*2].x2-avgLines[f*2].x1;
	    dy = avgLines[f*2].y2-avgLines[f*2].y1;
	    
	    markScale = curAvg/max;
	    dx *= markScale;
	    dy *= markScale;
	    curAvgLines[f].setLine(avgLines[f*2].x1+dx, avgLines[f*2].y1+dy,
				   avgLines[f*2 + 1].x1+dx, avgLines[f*2 + 1].y1+dy);
	    //avgMarks[f*2 + 1].moveTo((float)(avgLines[f*2 + 1].x1+dx), (float)(avgLines[f*2 + 1].y1+dy));
	    //avgMarks[f*2 + 1].lineTo((float)(avgLines[f*2 + 1].x1+dx-mx-rx), (float)(avgLines[f*2 + 1].y1+dy-my-ry));
	    //avgMarks[f*2 + 1].lineTo((float)(avgLines[f*2 + 1].x1+dx-mx+rx), (float)(avgLines[f*2 + 1].y1+dy-my+ry));
	    //avgMarks[f*2 + 1].closePath();

	}
    }


    public void mousePressed(MouseEvent e) {}
    public void mouseReleased(MouseEvent e) {}
    public void mouseClicked(MouseEvent e) {
	//if ( SwingUtilities.isLeftMouseButton(e) ) {
	//    if ( numFeat < 20 ) { numFeat++; }
	//} else { 
	//    if ( numFeat > 2 ) { numFeat--; }
	//}
	//reLayout();
	//repaint();
    }
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mouseDragged(MouseEvent e) {}
    public void mouseMoved(MouseEvent e) {}

    public Shape toPoint(Point2D p) {
	Rectangle r = new Rectangle((int)p.getX()-2,(int)p.getY()-2,5,5);
	return (Shape) r;
    }

    public void paintComponent(Graphics g) {
	
	Graphics2D g2 = (Graphics2D) g;
	g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, // Antialiasing setzen
			     (aa) ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF );

	super.paintComponent(g);
	
	//g2.draw(toPoint(cP));
	g2.setStroke(plotStroke);
	g2.draw(wheel);

	float dash[] = {2,5};

	for ( int i = 0; i < numFeat; i++ ) {
	    Stroke st = g2.getStroke();
	    
	    g2.setStroke(new BasicStroke(1,BasicStroke.JOIN_ROUND,BasicStroke.CAP_ROUND,
					 1, dash, 0) );
	    g2.setColor(colors[i%7]);
	    g2.draw(curAvgLines[i]);
	    g2.setStroke(st);
	    g2.draw(plots[i]);
	    g2.draw(starLines[i]);
	    g2.draw(circles[i]);
	    g2.draw(marks[i]);
	    g2.setColor(Color.LIGHT_GRAY);
	    g2.draw(avgLines[i*2]);
	    g2.draw(avgLines[i*2 + 1]);
	    g2.setColor(colors[i%7]);
	    g2.draw(avgMarks[i*2]);
	    g2.draw(avgMarks[i*2 +1]);
	}

	g2.setColor(Color.WHITE);
	g2.draw(timeAxis);
	g2.setColor(Color.BLACK);
	g2.draw(innerAxis);
	g2.setColor(Color.GRAY);
	g2.draw(new Line2D.Double((double)scroll.getLocation().x,(double)scroll.getLocation().y,
				  innerAxis.x1,innerAxis.y1));
	g2.draw(new Line2D.Double((double)(scroll.getLocation().x+scroll.getSize().width-1),(double)scroll.getLocation().y,
				  innerAxis.x2,innerAxis.y2));
	
    }
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
    public class InnerScroller extends JComponent {

	private boolean inside;
	private Point mp;
	private InnerScroller mySelf;

	public InnerScroller() {
	    
	    super();
	    mySelf = this;
	    
	    inside = false;
	    
	    setOpaque(false);                    // ..
	    setVisible(true);                    // .
	    setDoubleBuffered(true);             // .
	    
	    addMouseListener( new MouseAdapter() {
		    public void mousePressed(MouseEvent e) {
			mp = e.getPoint();
		    }
		    public void mouseReleased(MouseEvent e) {
		    }
		    public void mouseEntered(MouseEvent e) {
			inside = true;
			repaint();
		    }
		    public void mouseExited(MouseEvent e) {
			inside = false;
			repaint();
		    }
		});

	    addMouseMotionListener( new MouseMotionAdapter() {

		    public void mouseDragged(MouseEvent e) {
			
			// neu Scroller Position berechnen
			int x = getLocation().x - mp.x + e.getPoint().x;
			x = SwingUtilities.convertPoint(mySelf,e.getPoint(),getParent()).x;

			// daraus neues Offset ableiten
			int l = (int)(innerAxis.x2 - innerAxis.x1);
			double t = (x - innerAxis.x1) / l;
			((TimeWheel2)getParent()).setInnerOffset((int)Math.round(t * (numVal-1)));

			// durch reLayout wird auch an neues inneresOffset angepasste
			// InnerScrollerposition bestimmt und neu gemalt
			((TimeWheel2)getParent()).reLayout();
			getParent().repaint();

		    }
		});
	    
	}
	
	public void setBounds(int x, int y, int w, int h) {
	    super.setBounds(x,y,Math.max(w,3),h);
	}
	
	public void paintComponent(Graphics g) {
	    
	    Graphics2D g2 = (Graphics2D) g;
	    g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, // Antialiasing setzen
	    			 (aa) ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF );
	    Rectangle b = getBounds();
	    b.x = 0;
	    b.y = 0;
	    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.6f));
	    g2.setColor((inside) ? new Color(255,255,190) : Color.LIGHT_GRAY);
	    g2.fill(b);
	    b.width--;
	    b.height--;
	    g2.setColor(Color.DARK_GRAY);
	    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
	    g2.draw(b);
	}
    }

/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
    public class Scroller extends JComponent {

	private boolean inside;
	private Point mp;

	public Scroller() {
	    
	    super();
	    
	    inside = false;
	    
	    setOpaque(false);                    // ..
	    setVisible(true);                    // .
	    setDoubleBuffered(true);             // .
	    
	    addMouseListener( new MouseAdapter() {
		    public void mousePressed(MouseEvent e) {
			mp = e.getPoint();
		    }
		    public void mouseReleased(MouseEvent e) {
		    }
		    public void mouseEntered(MouseEvent e) {
			inside = true;
			repaint();
		    }
		    public void mouseExited(MouseEvent e) {
			inside = false;
			repaint();
		    }
		});

	    addMouseMotionListener( new MouseMotionAdapter() {

		    public void mouseDragged(MouseEvent e) {
			
			// neu Scroller Position berechnen
			int x = getLocation().x - mp.x + e.getPoint().x;

			// daraus neues Offset ableiten
			int l = (int)timeAxis.x2 - (int)timeAxis.x1;
			double t = (x - timeAxis.x1) / l;
			((TimeWheel2)getParent()).setOffset((int)(t * numData));

			// durch reLayout wird auch an neues Offset angepasste
			// Scrollerposition bestimmt und neu gemalt
			((TimeWheel2)getParent()).reLayout();
			getParent().repaint();

			//System.out.println(t+" "+timeAxis.x1+" "+timeAxis.x2+" "+l+" "+lp.x+" "+offset);
		    }
		});
	    
	}
	
	public void setBounds(int x, int y, int w, int h) {
	    super.setBounds(x,y,Math.max(w,3),h);
	}
	
	public void paintComponent(Graphics g) {
	    
	    Graphics2D g2 = (Graphics2D) g;
	    g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, // Antialiasing setzen
	    			 (aa) ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF );
	    Rectangle b = getBounds();
	    b.x = 0;
	    b.y = 0;
	    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.6f));
	    g2.setColor((inside) ? new Color(255,255,190) : Color.LIGHT_GRAY);
	    g2.fill(b);
	    b.width--;
	    b.height--;
	    g2.setColor(Color.DARK_GRAY);
	    g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
	    g2.draw(b);
	}
    }

/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
	public class Rotator extends JComponent {
	
	private boolean left;
	private boolean inside;
	private javax.swing.Timer timer;
	private GeneralPath rot;

	public Rotator(boolean l) {
	    
	    super();

	    inside = false;
	    left = l;
	    rot = new GeneralPath();

	    ActionListener taskPerformer;	
	    int delay;
	    taskPerformer = new ActionListener() {
		    public void actionPerformed(ActionEvent evt) {
			if (left) {
			    winkel--;
			    if ( winkel < 0 ) { winkel = 359; }
			    ((TimeWheel2)getParent()).reLayout();
			    getParent().repaint();
			}
			else {
			    winkel++;
			    if ( winkel > 359 ) { winkel = 0; }
			    ((TimeWheel2)getParent()).reLayout();
			    getParent().repaint();
			}
		    }
		};
	    delay = 0; //milliseconds
	    timer = new javax.swing.Timer(delay, taskPerformer);
	    
	    setOpaque(false);                    // ..
	    setVisible(true);                    // .
	    setDoubleBuffered(true);             // .

	    addMouseListener( new MouseAdapter() {
		    public void mousePressed(MouseEvent e) {
			timer.start();
		    }
		    public void mouseReleased(MouseEvent e) {
			timer.stop();
		    }
		    public void mouseEntered(MouseEvent e) {
			inside = true;
			repaint();
		    }
		    public void mouseExited(MouseEvent e) {
			inside = false;
			repaint();
		    }
		});
	}

	public void setBounds(int x, int y, int w, int h) {
	    super.setBounds(x,y,w,h);
	    reLayout();
	}

	public boolean contains(Point p) {
	    return rot.contains(p);
	}

	public boolean contains(int x, int y) {
	    boolean b = rot.contains(x,y);
	    return rot.contains(x,y);
	}

	public void reLayout() {
	
	    int w = getWidth();
	    int h = getHeight();

	    float len = (float) ((w<h) ? w : h);
	    float len6 = len/6.0f;

	    rot.reset();
	    if (left) {
	    	rot.moveTo(0*len6, 4*len6);
	    	rot.lineTo(1*len6, 4*len6);
		rot.append(new Arc2D.Double(new Rectangle2D.Double(1*len6, 0*len6, 10*len6, 8*len6), 180, -90, Arc2D.OPEN),true);
	    	rot.lineTo(6*len6-1, 0*len6);
	    	rot.lineTo(6*len6-1, 2*len6);
		rot.append(new Arc2D.Double(new Rectangle2D.Double(3*len6, 2*len6, 6*len6, 4*len6), 90, 90, Arc2D.OPEN),true);
	    	rot.lineTo(4*len6, 4*len6);
	    	rot.lineTo(2*len6, 6*len6-1);
	    }
	    else {
		rot.moveTo(0*len6, 0*len6);
		rot.append(new Arc2D.Double(new Rectangle2D.Double(-5*len6, 0*len6, 10*len6, 8*len6), 90, -90, Arc2D.OPEN),true);
		rot.lineTo(5*len6, 4*len6);
		rot.lineTo(6*len6-1, 4*len6);
	    	rot.lineTo(4*len6, 6*len6-1);
	    	rot.lineTo(2*len6, 4*len6);
	    	rot.lineTo(3*len6, 4*len6);
		rot.append(new Arc2D.Double(new Rectangle2D.Double(-3*len6, 2*len6, 6*len6, 4*len6), 0, 90, Arc2D.OPEN),true);
		rot.lineTo(0*len6, 2*len6);
	    }
	    rot.closePath();
	}

	public void paintComponent(Graphics g) {
	    
	    Graphics2D g2 = (Graphics2D) g;
	    g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, // Antialiasing setzen
	    			 (aa) ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF );
	    g2.setColor((inside) ? new Color(255,255,190) : Color.LIGHT_GRAY);
	    g2.fill(rot);
	    g2.setColor(Color.GRAY);
	    g2.draw(rot);
	}
    }
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
    public class Zoomer extends JComponent {
	
	private boolean plus;
	private boolean inside;
	private javax.swing.Timer timer;
	private GeneralPath zoom;
	
	public Zoomer(boolean p) {
	    
	    super();

	    inside = false;
	    plus = p;
	    zoom = new GeneralPath();
	    
	    ActionListener taskPerformer;	
	    int delay;
	    taskPerformer = new ActionListener() {
		    public void actionPerformed(ActionEvent evt) {
			
			if (plus) {
			    if ( numVal > 2 ) {
				((TimeWheel2)getParent()).decNumVal();
				((TimeWheel2)getParent()).reLayout();
				getParent().repaint();
			    }
			}
			else {
			    if ( numVal < numData ) {
				((TimeWheel2)getParent()).incNumVal();
				((TimeWheel2)getParent()).reLayout();
				getParent().repaint();
			    }
			}
		    }
		};
	    delay = 0; //milliseconds
	    timer = new javax.swing.Timer(delay, taskPerformer);
	    
	    setOpaque(false);                    // ..
	    setVisible(true);                    // .
	    setDoubleBuffered(true);             // .

	    addMouseListener( new MouseAdapter() {
		    public void mousePressed(MouseEvent e) {
			timer.start();
		    }
		    public void mouseReleased(MouseEvent e) {
			timer.stop();
		    }
		    public void mouseEntered(MouseEvent e) {
			inside = true;
			repaint();
		    }
		    public void mouseExited(MouseEvent e) {
			inside = false;
			repaint();
		    }
		});
	}

	public void setBounds(int x, int y, int w, int h) {
	    super.setBounds(x,y,w,h);
	    reLayout();
	}

	public boolean contains(Point p) {
	    return zoom.contains(p);
	}

	public boolean contains(int x, int y) {
	    return zoom.contains(x,y);
	}

	public void reLayout() {
	
	    int w = getWidth();
	    int h = getHeight();

	    float len = (float) ((w<h) ? w : h);
	    float len6 = len/6.0f;

	    zoom.reset();
	    if (plus) {
		zoom.moveTo(0*len6, 2*len6);
		zoom.lineTo(2*len6, 2*len6);
		zoom.lineTo(2*len6, 0*len6);
		zoom.lineTo(4*len6, 0*len6);
		zoom.lineTo(4*len6, 2*len6);
		zoom.lineTo(6*len6-1, 2*len6);
		zoom.lineTo(6*len6-1, 4*len6);
		
		zoom.lineTo(4*len6, 4*len6);
		zoom.lineTo(4*len6, 6*len6-1);
		zoom.lineTo(2*len6, 6*len6-1);
		zoom.lineTo(2*len6, 4*len6);
		zoom.lineTo(0*len6, 4*len6);

	    }
	    else {
		zoom.moveTo(0*len6, 2*len6);
		zoom.lineTo(6*len6-1, 2*len6);
		zoom.lineTo(6*len6-1, 4*len6);
		zoom.lineTo(0*len6, 4*len6);
	    }
	    zoom.closePath();
	}

	public void paintComponent(Graphics g) {
	    
	    Graphics2D g2 = (Graphics2D) g;
	    g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, // Antialiasing setzen
	    			 (aa) ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF );
	    g2.setColor((plus) ? new Color(255,0,0) : new Color(0,220,0));
	    if ( inside ) { g2.setColor(new Color(255,255,190)); }
	    g2.fill(zoom);
	    g2.setColor((plus) ? new Color(180,0,0) : new Color(0,180,0));
	    g2.draw(zoom);
	}
    }


/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////
    public class Shifter extends JComponent {
	
	private boolean left;
	private boolean inside;
	private javax.swing.Timer timer;
	private GeneralPath shift;

	public Shifter(boolean l) {
	    
	    super();

	    inside = false;
	    left = l;
	    shift = new GeneralPath();

	    ActionListener taskPerformer;	
	    int delay;
	    taskPerformer = new ActionListener() {
		    public void actionPerformed(ActionEvent evt) {
			
			if (left) {
			    ((TimeWheel2)getParent()).decOffset();
			    ((TimeWheel2)getParent()).reLayout();
			    getParent().repaint();
			}
			else {
			    ((TimeWheel2)getParent()).incOffset();
			    ((TimeWheel2)getParent()).reLayout();
			    getParent().repaint();
			}
		    }
		};
	    delay = 0; //milliseconds
	    timer = new javax.swing.Timer(delay, taskPerformer);
	    
	    setOpaque(false);                    // ..
	    setVisible(true);                    // .
	    setDoubleBuffered(true);             // .

	    addMouseListener( new MouseAdapter() {
		    public void mousePressed(MouseEvent e) {
			timer.start();
		    }
		    public void mouseReleased(MouseEvent e) {
			timer.stop();
		    }
		    public void mouseEntered(MouseEvent e) {
			inside = true;
			repaint();
		    }
		    public void mouseExited(MouseEvent e) {
			inside = false;
			repaint();
		    }
		});
	}
	
	public void setBounds(int x, int y, int w, int h) {
	    super.setBounds(x,y,w,h);
	    reLayout();
	}

	public boolean contains(Point p) {
	    return shift.contains(p);
	}

	public boolean contains(int x, int y) {
	    return shift.contains(x,y);
	}

	public void reLayout() {
	
	    int w = getWidth();
	    int h = getHeight();

	    float len = (float) ((w<h) ? w : h);
	    float len6 = len/6.0f;

	    shift.reset();
	    if (left) {
		shift.moveTo(6*len6-1, 2*len6);
		shift.lineTo(3*len6, 2*len6);
		shift.lineTo(3*len6, 1*len6);
		shift.lineTo(0*len6, 3*len6);
		shift.lineTo(3*len6, 5*len6);
		shift.lineTo(3*len6, 4*len6);
		shift.lineTo(6*len6-1, 4*len6);
	    }
	    else {
		shift.moveTo(0*len6, 2*len6);
		shift.lineTo(3*len6, 2*len6);
		shift.lineTo(3*len6, 1*len6);
		shift.lineTo(6*len6-1, 3*len6);
		shift.lineTo(3*len6, 5*len6);
		shift.lineTo(3*len6, 4*len6);
		shift.lineTo(0*len6, 4*len6);
	    }
	    shift.closePath();
	}

	public void paintComponent(Graphics g) {
	    
	    Graphics2D g2 = (Graphics2D) g;
	    g2.setRenderingHint( RenderingHints.KEY_ANTIALIASING, // Antialiasing setzen
	    			 (aa) ? RenderingHints.VALUE_ANTIALIAS_ON : RenderingHints.VALUE_ANTIALIAS_OFF );

	    //g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.6f));
	    g2.setColor((inside) ? new Color(255,255,190) : Color.LIGHT_GRAY);
	    g2.fill(shift);

	    g2.setColor(Color.DARK_GRAY);
	    //g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC));
	    g2.draw(shift);
	}
    }
}
