diff --git a/.travis.yml b/.travis.yml
index 5f17d9b9462171004b3c5b6f758be4a9cc12b8ed..b3c76136d89f79c4e4577f4f550b1f1e332134ca 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,10 +11,10 @@ compiler:
 
 before_install:
   # Linux
-  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then cd && wget https://root.cern.ch/download/root_v6.14.00.Linux-ubuntu14-x86_64-gcc4.8.tar.gz; fi 
+  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then cd && wget -q https://root.cern.ch/download/root_v6.14.00.Linux-ubuntu14-x86_64-gcc4.8.tar.gz; fi 
   - if [ "$TRAVIS_OS_NAME" == "linux" ]; then tar -xf root_v6.14.00.Linux-ubuntu14-x86_64-gcc4.8.tar.gz; fi
   - if [ "$TRAVIS_OS_NAME" == "linux" ]; then source ~/root/bin/thisroot.sh; fi
-  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then cd && wget https://www.dropbox.com/s/8hxjkd6twdsv5fi/geant4_install_new.tar.gz; fi
+  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then cd && wget -q https://www.dropbox.com/s/8hxjkd6twdsv5fi/geant4_install_new.tar.gz; fi
   - if [ "$TRAVIS_OS_NAME" == "linux" ]; then tar -xf geant4_install_new.tar.gz; fi
   - if [ "$TRAVIS_OS_NAME" == "linux" ]; then source ~/geant4_install/share/Geant4-10.1.2/geant4make/geant4make.sh; fi
 
diff --git a/Examples/Example1/ShowResults.C b/Examples/Example1/ShowResults.C
index eabef9bf3da7fce25623e7d096d46b3c72f27876..8ea68944e989e3f7845c980a10f7837f31c3488e 100644
--- a/Examples/Example1/ShowResults.C
+++ b/Examples/Example1/ShowResults.C
@@ -1,5 +1,5 @@
-#include"NPReaction.h"
-
+#include "NPReaction.h"
+#include "NPNucleus.h"
 TCutG* ETOF=NULL;
 TCutG* EDE=NULL;
 TChain* chain=NULL ;
@@ -31,21 +31,33 @@ void ShowResults(){
     // E-DE
     c1->cd(1);
     chain->Draw("SSSD.Energy:MUST2.Si_E>>hIDE(1000,0,35,1000,0,5)","MUST2.CsI_E<0 && MUST2.TelescopeNumber<5","colz");
-
+    TH1F* hIDE = (TH1F*) gDirectory->FindObjectAny("hIDE");
+    hIDE->GetYaxis()->SetTitle("SSSD Energy (MeV)");
+    hIDE->GetXaxis()->SetTitle("MUST2 Energy (MeV)");
+  
     EDE->Draw("same");
     
     // E-TOF
     c1->cd(2);
     chain->Draw("MUST2.Si_T:SSSD.Energy+MUST2.Si_E>>hIDT(1000,0,35,500,450,500)","MUST2.CsI_E<0 && MUST2.TelescopeNumber<5","colz");
-
+    TH1F* hIDT = (TH1F*) gDirectory->FindObjectAny("hIDT");
+    hIDT->GetYaxis()->SetTitle("TOF (ns)");
+    hIDT->GetXaxis()->SetTitle("Energy (MeV)");
+  
 
     ETOF->Draw("same");
     
     // Kinematical Line //
     c1->cd(3);
     chain->Draw("ELab:ThetaLab>>h(1000,0,90,1000,0,30)","MUST2.CsI_E<0 && MUST2.TelescopeNumber<5 && EDE && ETOF","colz");
+    TH1F* h = (TH1F*) gDirectory->FindObjectAny("h");
+    h->GetYaxis()->SetTitle("Energy (MeV)");
+    h->GetXaxis()->SetTitle("Theta Lab(deg)");
     
     NPL::Reaction r("11Li(d,3He)10He@553");
+    vector<string> v={"8He","n","n"};
+    r.GetNucleus4()->DefineMassByThreshold(v);
+
     r.SetExcitationHeavy(1.4);
     TGraph* Kine = r.GetKinematicLine3();
     Kine->SetLineWidth(2);
@@ -78,17 +90,32 @@ void ShowResults(){
     
     c2->cd(1);
     chain->Draw("OriginalELab:OriginalThetaLab>>hS(1000,0,90,1000,0,30)","","col");
+    TH1F* hS = (TH1F*) gDirectory->FindObjectAny("hS"); 
+    hS->GetYaxis()->SetTitle("Simulated Energy (MeV)");
+    hS->GetXaxis()->SetTitle("Simulated Theta Lab (deg)");  
     Kine->Draw("c");
     c2->cd(2);
     chain->Draw("OriginalELab:ELab>>hS2(1000,0,30,1000,0,30)","ELab>0","col");
+    TH1F* hS2 = (TH1F*) gDirectory->FindObjectAny("hS2"); 
+    hS2->GetYaxis()->SetTitle("Simulated Energy (MeV)");
+    hS2->GetXaxis()->SetTitle("Reconstructed Energy (MeV)");  
+ 
     TLine* lE = new TLine(0,0,30,30);
     lE->Draw();
     c2->cd(3);
     chain->Draw("OriginalThetaLab:ThetaLab>>hS3(1000,0,90,1000,0,90)","ThetaLab>0","col");
+    TH1F* hS3 = (TH1F*) gDirectory->FindObjectAny("hS3"); 
+    hS3->GetYaxis()->SetTitle("Simulated Theta Lab (deg)");
+    hS3->GetXaxis()->SetTitle("Reconstructed Theta Lab (deg)");  
+    
     TLine* lT = new TLine(0,0,90,90);
     lT->Draw();
     c2->cd(4);
     chain->Draw("OriginalBeamEnergy:BeamEnergy>>hS4(1000,500,600,1000,500,600)","BeamEnergy>0","col");
+    TH1F* hS4 = (TH1F*) gDirectory->FindObjectAny("hS4"); 
+    hS4->GetYaxis()->SetTitle("Simulated Beam Energy (MeV)");
+    hS4->GetXaxis()->SetTitle("Reconstructed Beam Energy (MeV)");  
+  
     TLine* lB = new TLine(500,500,600,600);
     lB->Draw();
     
diff --git a/Examples/Example4/Analysis.cxx b/Examples/Example4/Analysis.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..ddc53e84c67d791f859aed8ad8a9fcddc992522f
--- /dev/null
+++ b/Examples/Example4/Analysis.cxx
@@ -0,0 +1,293 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2016    this file is part of the NPTool Project        *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Morfouace Pierre  contact address: morfouace@ganil.fr    *
+ *                                                                           *
+ * Creation Date  : April 2018                                               *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  Actar analysis project                              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+#include<iostream>
+
+using namespace std;
+#include"Analysis.h"
+#include"NPAnalysisFactory.h"
+#include"NPDetectorManager.h"
+#include"RootOutput.h"
+#include"RootInput.h"
+
+
+////////////////////////////////////////////////////////////////////////////////
+Analysis::Analysis(){
+}
+////////////////////////////////////////////////////////////////////////////////
+Analysis::~Analysis(){
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::Init(){
+    Actar= (TActarPhysics*) m_DetectorManager->GetDetector("Actar");
+    ReactionConditions = new TReactionConditions();
+
+    Actar->ReadAnalysisConfig();
+    if(Actar->GetRansacStatus()){
+        Actar->SetRansacParameter("./configs/RansacConfig.dat");
+    }
+
+    DriftVelocity = Actar->GetDriftVelocity();
+    PadSizeX = Actar->GetPadSizeX();
+    PadSizeY = Actar->GetPadSizeY();
+    NumberOfPadsX = Actar->GetNumberOfPadsX();
+    NumberOfPadsY = Actar->GetNumberOfPadsY();
+
+    EnergyLoss_1H = NPL::EnergyLoss("./EnergyLossTable/proton_iC4H10_6.24151e+07_295.G4table","G4Table",100);
+    EnergyLoss_18O = NPL::EnergyLoss("./EnergyLossTable/O18_iC4H10_6.24151e+07_295.G4table","G4Table",100);
+    TheReaction = new NPL::Reaction("18O(p,p)18O@59");
+
+    InitInputBranch();
+    InitOutputBranch();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::TreatEvent(){
+    ReInitValue();
+
+    LightName="";
+    if(ReactionConditions->GetParticleMultiplicity()>0){
+      InitXVertex = ReactionConditions->GetVertexPositionZ();
+      InitTheta3 = ReactionConditions->GetTheta(0);
+      InitE3 = ReactionConditions->GetKineticEnergy(0);
+      LightName = ReactionConditions->GetParticleName(0);
+    }
+    int TrackMult = Actar->GetTrackMult();
+
+    TVector3 vX = TVector3(1,0,0);
+    TVector3 aTrack, vB;
+
+    if(TrackMult>1){
+        vTrack = Actar->GetTracks();
+        double scalarproduct=0;
+        int BeamTrack=0;
+        for(unsigned int i=0; i<TrackMult; i++){
+            TVector3 vtest = TVector3(vTrack[i].GetDirectionVector().X(),vTrack[i].GetDirectionVector().Y(),vTrack[i].GetDirectionVector().Z());
+            TVector3 vunit = vtest.Unit();
+            double scalar = abs(vunit.Dot(vX));
+            vScalar.push_back(scalar);
+            //cout << scalar << endl;
+            //cout << scalarproduct << endl;
+            if(scalar>scalarproduct){
+                BeamTrack=i;
+                scalarproduct=scalar;
+            }
+        }
+
+        double XBeam = vTrack[BeamTrack].GetDirectionVector().X();
+        double YBeam = vTrack[BeamTrack].GetDirectionVector().Y();
+        double ZBeam = vTrack[BeamTrack].GetDirectionVector().Z();
+        TVector3 vBeam = TVector3(XBeam,YBeam,ZBeam);
+
+        double XBeamPoint = vTrack[BeamTrack].GetXh();
+        double YBeamPoint = vTrack[BeamTrack].GetYh();
+        double ZBeamPoint = vTrack[BeamTrack].GetZh();
+        TVector3 vBeamPos = TVector3(XBeamPoint,YBeamPoint,ZBeamPoint);
+
+        vB = TVector3(XBeam*PadSizeX, YBeam*PadSizeY,ZBeam*DriftVelocity);
+        BeamAngle = (vX.Angle(vB))*180/TMath::Pi();
+
+        for(unsigned int i=0; i<TrackMult; i++){
+            if(i!=BeamTrack){
+                double Xdir = vTrack[i].GetDirectionVector().X();
+                double Ydir = vTrack[i].GetDirectionVector().Y();
+                double Zdir = vTrack[i].GetDirectionVector().Z();
+
+                double vertex_x = vTrack[i].GetVertexPostion(vBeam,vBeamPos).X()*PadSizeX;
+                double vertex_y = vTrack[i].GetVertexPostion(vBeam,vBeamPos).Y()*PadSizeY;
+                double vertex_z = vTrack[i].GetVertexPostion(vBeam,vBeamPos).Z()*DriftVelocity;
+
+                aTrack = TVector3(Xdir*PadSizeX, Ydir*PadSizeY, Zdir*DriftVelocity);
+                double angle = vX.Angle(aTrack)*180/TMath::Pi();
+                //double angle = vB.Angle(aTrack)*180/TMath::Pi();
+                if(angle>90) angle = 180-angle;
+
+                double x1 = vTrack[i].GetXm()*PadSizeX;
+                double x2 = vTrack[i].GetXh()*PadSizeX;
+                double y1 = vTrack[i].GetYm()*PadSizeY-0.5*NumberOfPadsY*PadSizeY;
+                double y2 = vTrack[i].GetYh()*PadSizeY-0.5*NumberOfPadsY*PadSizeY;
+                //double z1 = -(vTrack[i].GetZm()-256)*DriftVelocity;
+                //double z2 = -(vTrack[i].GetZh()-256)*DriftVelocity;
+                double z1 = vTrack[i].GetZm()*DriftVelocity;
+                double z2 = vTrack[i].GetZh()*DriftVelocity;
+
+
+
+                if(vertex_x>0 && vertex_x<256){
+                    double LengthInGas = fSiDistanceX - vertex_x;
+                    for(unsigned int k=0; k<Actar->Si_E.size(); k++){
+                      XVertex.push_back(vertex_x);
+                      YVertex.push_back(vertex_y);
+                      ZVertex.push_back(vertex_z);
+                      
+                      GetMayaSiHitPosition(x1,x2,y1,y2,z1,z2);
+                      ESi.push_back(Actar->Si_E[k]);
+                      SiNumber.push_back(Actar->Si_Number[k]);
+
+                      DE.push_back(vTrack[i].GetPartialCharge(108,128)/(20./cos(angle*TMath::Pi()/180)));
+                      double E3;
+
+                      if(LightName=="proton")E3 = EnergyLoss_1H.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
+                      if(LightName=="deuteron")E3 = EnergyLoss_2H.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
+                      if(LightName=="triton")E3 = EnergyLoss_3H.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
+                      if(LightName=="He3")E3 = EnergyLoss_3He.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
+                      if(LightName=="alpha")E3 = EnergyLoss_4He.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
+                      //double BeamEnergy = EnergyLoss_18O.Slow(59.4*MeV,(vertex_x[i]+60)*mm, BeamAngle*TMath::Pi()/180);
+                      double Energy_beam = EnergyLoss_18O.Slow(59.4*MeV,(vertex_x+60)*mm, 0);
+                      BeamEnergy.push_back(Energy_beam);
+                      TheReaction->SetBeamEnergy(Energy_beam);
+                      ELab.push_back(E3);
+                      ThetaLab.push_back(angle);
+                      TheReaction->SetNuclei3(E3,angle*TMath::Pi()/180);
+                      Ex.push_back(TheReaction->GetExcitation4());
+                      ThetaCM.push_back(TheReaction->GetThetaCM()*180./TMath::Pi());
+                    }
+                }
+            }
+        }
+    }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::GetMayaSiHitPosition(double xm, double xh, double ym, double yh, double zm, double zh)
+{
+    double X1, X2, Y1, Y2, Z1, Z2;
+
+    if(xm>xh){
+      X1 = xh;
+      Y1 = yh;
+      Z1 = zh;
+
+      X2 = xm;
+      Y2 = ym;
+      Z2 = zm;
+    }
+    else if(xh>xm){
+      X1 = xm;
+      Y1 = ym;
+      Z1 = zm;
+
+      X2 = xh;
+      Y2 = yh;
+      Z2 = zh;
+    }
+
+    double l, L, t;
+    double zf, yf;
+
+    if(fSiDistanceX>X2){
+      L = fSiDistanceX-X2;
+      l = X2 - X1;
+      t = (l+L)/l;
+
+      zf = Z1 + (Z2-Z1)*t;
+      yf = Y1 + (Y2-Y1)*t;
+    }
+    else if(fSiDistanceX<X2){
+      L = X2 - fSiDistanceX;
+      l = fSiDistanceX - X1;
+      t = (l+L)/l;
+
+      zf = Z1 + (Z2-Z1)/t;
+      yf = Y1 + (Y2-Y1)/t;
+    }
+
+    SiPosY.push_back(yf);
+    SiPosZ.push_back(zf);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::End(){
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::InitInputBranch() {
+  RootInput::getInstance()->GetChain()->SetBranchStatus("ReactionConditions",true);
+  RootInput::getInstance()->GetChain()->SetBranchStatus("fRC_*",true);
+  RootInput::getInstance()->GetChain()->SetBranchAddress("ReactionConditions",&ReactionConditions);
+}
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::InitOutputBranch() {
+    RootOutput::getInstance()->GetTree()->Branch("DE",&DE);
+    RootOutput::getInstance()->GetTree()->Branch("SiNumber",&SiNumber);
+    RootOutput::getInstance()->GetTree()->Branch("ESi",&ESi);
+    RootOutput::getInstance()->GetTree()->Branch("ELab",&ELab);
+    RootOutput::getInstance()->GetTree()->Branch("ThetaLab",&ThetaLab);
+    RootOutput::getInstance()->GetTree()->Branch("Ex",&Ex);
+    RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM);
+    RootOutput::getInstance()->GetTree()->Branch("vScalar",&vScalar);
+    RootOutput::getInstance()->GetTree()->Branch("XVertex",&XVertex);
+    RootOutput::getInstance()->GetTree()->Branch("YVertex",&YVertex);
+    RootOutput::getInstance()->GetTree()->Branch("ZVertex",&ZVertex);
+    RootOutput::getInstance()->GetTree()->Branch("BeamAngle",&BeamAngle,"BeamAngle/D");
+    RootOutput::getInstance()->GetTree()->Branch("BeamEnergy",&BeamEnergy);
+    RootOutput::getInstance()->GetTree()->Branch("SiPosY",&SiPosY);
+    RootOutput::getInstance()->GetTree()->Branch("SiPosZ",&SiPosZ);
+    RootOutput::getInstance()->GetTree()->Branch("InitXVertex",&InitXVertex,"InitXVertex/D");
+    RootOutput::getInstance()->GetTree()->Branch("InitE3",&InitE3,"InitE3/D");
+    RootOutput::getInstance()->GetTree()->Branch("InitTheta3",&InitTheta3,"InitTheta3/D");
+
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::ReInitValue(){
+    DE.clear();
+    SiNumber.clear();
+    ESi.clear();
+    ELab.clear();
+    ThetaLab.clear();
+    Ex.clear();
+    ThetaCM.clear();
+    vScalar.clear();
+    XVertex.clear();
+    YVertex.clear();
+    ZVertex.clear();
+    SiPosY.clear();
+    SiPosZ.clear();
+    BeamEnergy.clear();
+
+    BeamAngle=-1000;
+    InitE3=-1000;
+    InitTheta3=-1000;
+    InitXVertex=-1000;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//            Construct Method to be pass to the DetectorFactory              //
+////////////////////////////////////////////////////////////////////////////////
+NPL::VAnalysis* Analysis::Construct(){
+    return (NPL::VAnalysis*) new Analysis();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+//            Registering the construct method to the factory                 //
+////////////////////////////////////////////////////////////////////////////////
+extern "C"{
+    class proxy{
+    public:
+        proxy(){
+            NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct);
+        }
+    };
+
+    proxy p;
+}
diff --git a/Examples/Example4/Analysis.h b/Examples/Example4/Analysis.h
new file mode 100644
index 0000000000000000000000000000000000000000..562d4eae0a44a023624a5af0a2e8394c2f85af87
--- /dev/null
+++ b/Examples/Example4/Analysis.h
@@ -0,0 +1,99 @@
+#ifndef Analysis_h
+#define Analysis_h
+/*****************************************************************************
+ * Copyright (C) 2009-2016    this file is part of the NPTool Project        *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: XAUTHORX  contact address: XMAILX                        *
+ *                                                                           *
+ * Creation Date  : XMONTHX XYEARX                                           *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe  Actar analysis project                       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+
+#include "NPVAnalysis.h"
+#include "TActarPhysics.h"
+#include "NPEnergyLoss.h"
+#include "NPReaction.h"
+#include "NPTrack.h"
+#include "TReactionConditions.h"
+
+
+
+class Analysis: public NPL::VAnalysis{
+public:
+    Analysis();
+    ~Analysis();
+
+public:
+    void Init();
+    void TreatEvent();
+    void End();
+    void InitOutputBranch();
+    void InitInputBranch();
+    void ReInitValue();
+    void GetMayaSiHitPosition(double xm, double xh, double ym, double yh, double zm, double zh);
+
+
+
+    static NPL::VAnalysis* Construct();
+
+public:
+    double DriftVelocity;
+    double PadSizeX;
+    double PadSizeY;
+    int NumberOfPadsX;
+    int NumberOfPadsY;
+
+    string LightName="";
+
+
+private:
+    double fSiDistanceX=256+47;
+
+    TActarPhysics* Actar;
+
+    vector<NPL::Track> vTrack;
+
+    double BeamAngle;
+    double InitXVertex;
+    double InitE3;
+    double InitTheta3;
+    vector<double> BeamEnergy;
+    vector<double> vScalar;
+    vector<double> ThetaLab;
+    vector<double> ELab;
+    vector<int> SiNumber;
+    vector<double> ESi;
+    vector<double> DE;
+    vector<double> Ex;
+    vector<double> ThetaCM;
+    vector<double> XVertex;
+    vector<double> YVertex;
+    vector<double> ZVertex;
+    vector<double> SiPosY;
+    vector<double> SiPosZ;
+
+    NPL::EnergyLoss EnergyLoss_1H;
+    NPL::EnergyLoss EnergyLoss_2H;
+    NPL::EnergyLoss EnergyLoss_3H;
+    NPL::EnergyLoss EnergyLoss_3He;
+    NPL::EnergyLoss EnergyLoss_4He;
+    NPL::EnergyLoss EnergyLoss_18O;
+    NPL::Reaction* TheReaction;
+
+    TReactionConditions* ReactionConditions;
+
+
+};
+#endif
diff --git a/Examples/Example4/CMakeLists.txt b/Examples/Example4/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..22c74affdfc45019bdda2594f8439c52d4ab97ec
--- /dev/null
+++ b/Examples/Example4/CMakeLists.txt
@@ -0,0 +1,5 @@
+cmake_minimum_required (VERSION 2.8) 
+# Setting the policy to match Cmake version
+cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
+# include the default NPAnalysis cmake file
+include("../../NPLib/ressources/CMake/NPAnalysis.cmake")
diff --git a/Examples/Example4/EnergyLossTable/O18_iC4H10_6.24151e+07_295.G4table b/Examples/Example4/EnergyLossTable/O18_iC4H10_6.24151e+07_295.G4table
new file mode 100644
index 0000000000000000000000000000000000000000..33d5719b2ac9f4ffa61eb3bc1c7e295d33a1854e
--- /dev/null
+++ b/Examples/Example4/EnergyLossTable/O18_iC4H10_6.24151e+07_295.G4table
@@ -0,0 +1,441 @@
+Table from Geant4 generate using NPSimulation 	Particle: O18	Material: NPS_iC4H10_6.24151e+07_295
+1e-09	4.40156e-07
+0.001	5.61818e-05
+0.002	6.05315e-05
+0.003	6.23148e-05
+0.004	6.33219e-05
+0.005	6.38752e-05
+0.007	6.4395e-05
+0.011	6.46829e-05
+0.019	6.50493e-05
+0.035	6.68188e-05
+0.051	6.9555e-05
+0.067	7.26073e-05
+0.083	7.59032e-05
+0.099	7.90338e-05
+0.115	8.21993e-05
+0.131	8.55109e-05
+0.147	8.8655e-05
+0.163	9.15793e-05
+0.179	9.4442e-05
+0.195	9.75325e-05
+0.211	0.00010052
+0.227	0.00010338
+0.243	0.000106125
+0.259	0.000108767
+0.275	0.000111316
+0.291	0.000113779
+0.307	0.000116163
+0.323	0.000118475
+0.339	0.000120719
+0.355	0.000122981
+0.371	0.000125285
+0.387	0.000127585
+0.403	0.000129834
+0.419	0.000132036
+0.435	0.000134191
+0.451	0.000136326
+0.467	0.00013879
+0.483	0.00014127
+0.499	0.000143769
+0.515	0.000146261
+0.531	0.000148742
+0.547	0.000151159
+0.563	0.000153494
+0.579	0.00015582
+0.595	0.000158149
+0.611	0.000160466
+0.627	0.000162778
+0.643	0.000165071
+0.659	0.000167344
+0.675	0.000169597
+0.691	0.000171829
+0.707	0.000174055
+0.723	0.000176253
+0.739	0.000178416
+0.755	0.000180559
+0.771	0.000182678
+0.787	0.000184774
+0.803	0.000186847
+0.819	0.000188898
+0.835	0.000190929
+0.851	0.000192938
+0.867	0.000194927
+0.883	0.000196896
+0.899	0.000198847
+0.931	0.000202698
+0.963	0.000206493
+0.995	0.000210228
+1.027	0.000213891
+1.059	0.000217475
+1.091	0.000220981
+1.123	0.000224408
+1.155	0.000227761
+1.187	0.000231056
+1.219	0.000234282
+1.251	0.000237447
+1.283	0.000240541
+1.315	0.000243565
+1.347	0.000246517
+1.379	0.000249397
+1.411	0.000252204
+1.443	0.000254935
+1.475	0.000257592
+1.507	0.000260175
+1.539	0.000262686
+1.603	0.000267498
+1.667	0.000272041
+1.731	0.000276328
+1.795	0.000280389
+1.859	0.00028423
+1.923	0.00028785
+1.987	0.000291251
+2.051	0.000294445
+2.115	0.000297441
+2.179	0.000300251
+2.307	0.000305353
+2.435	0.000309866
+2.563	0.000313862
+2.691	0.000317407
+2.819	0.000320464
+3.075	0.000325575
+3.331	0.00032954
+3.587	0.000332578
+4.099	0.000336674
+4.611	0.000338757
+5.635	0.000339553
+7.683	0.000334263
+9.731	0.000325617
+11.779	0.000315867
+13.827	0.00030597
+15.875	0.000296216
+17.923	0.000286801
+19.971	0.000277819
+22.019	0.000269243
+24.067	0.000261071
+26.115	0.000253301
+28.163	0.000245941
+30.211	0.000238971
+32.259	0.000232351
+34.307	0.000226059
+36.355	0.000220076
+38.403	0.000214371
+40.451	0.000208938
+42.499	0.00020376
+44.547	0.000198824
+46.595	0.000194113
+48.643	0.000189615
+50.691	0.000185316
+52.739	0.000181203
+54.787	0.000177259
+56.835	0.000173473
+58.883	0.000169839
+60.931	0.000166351
+62.979	0.000163001
+65.027	0.000159781
+67.075	0.000156682
+69.123	0.000153697
+71.171	0.00015082
+73.219	0.00014805
+75.267	0.00014538
+77.315	0.000142801
+79.363	0.000140308
+81.411	0.000137899
+83.459	0.00013557
+85.507	0.000133318
+87.555	0.000131138
+89.603	0.000129029
+91.651	0.000126984
+93.699	0.000125002
+95.747	0.000123081
+97.795	0.000121219
+99.843	0.000119414
+101.891	0.000117663
+103.939	0.000115964
+105.987	0.000114314
+108.035	0.00011271
+110.083	0.000111151
+112.131	0.000109634
+114.179	0.000108159
+116.227	0.000106724
+118.275	0.000105327
+120.323	0.000103967
+122.371	0.000102643
+124.419	0.000101352
+126.467	0.000100095
+128.515	9.88682e-05
+130.563	9.76719e-05
+132.611	9.65048e-05
+134.659	9.53661e-05
+136.707	9.42548e-05
+138.755	9.317e-05
+140.803	9.21108e-05
+142.851	9.10761e-05
+144.899	9.00652e-05
+146.947	8.90771e-05
+148.995	8.81113e-05
+151.043	8.71671e-05
+153.091	8.62438e-05
+155.139	8.53409e-05
+157.187	8.44576e-05
+159.235	8.35933e-05
+161.283	8.27475e-05
+163.331	8.19194e-05
+165.379	8.11084e-05
+169.475	7.95358e-05
+173.571	7.80253e-05
+177.667	7.65727e-05
+181.763	7.51722e-05
+185.859	7.38205e-05
+189.955	7.25172e-05
+194.051	7.12605e-05
+198.147	7.00489e-05
+202.243	6.88808e-05
+206.339	6.77544e-05
+210.435	6.66681e-05
+214.531	6.56203e-05
+218.627	6.46093e-05
+222.723	6.36335e-05
+226.819	6.26912e-05
+230.915	6.17808e-05
+235.011	6.09007e-05
+239.107	6.00493e-05
+243.203	5.92248e-05
+247.299	5.84257e-05
+251.395	5.76503e-05
+255.491	5.68968e-05
+259.587	5.61637e-05
+263.683	5.54492e-05
+267.779	5.47518e-05
+271.875	5.40787e-05
+275.971	5.34307e-05
+280.067	5.27969e-05
+284.163	5.21769e-05
+288.259	5.15705e-05
+292.355	5.09774e-05
+296.451	5.03975e-05
+300.547	4.98304e-05
+304.643	4.92759e-05
+308.739	4.87337e-05
+312.835	4.82035e-05
+316.931	4.76852e-05
+321.027	4.71785e-05
+325.123	4.66831e-05
+329.219	4.61987e-05
+333.315	4.57251e-05
+337.411	4.52621e-05
+341.507	4.48094e-05
+345.603	4.43667e-05
+353.795	4.35105e-05
+361.987	4.26903e-05
+370.179	4.19016e-05
+378.371	4.11462e-05
+386.563	4.04226e-05
+394.755	3.97288e-05
+402.947	3.90631e-05
+411.139	3.84239e-05
+419.331	3.78094e-05
+427.523	3.72179e-05
+435.715	3.66475e-05
+443.907	3.60967e-05
+452.099	3.55636e-05
+460.291	3.50467e-05
+468.483	3.45457e-05
+476.675	3.40599e-05
+484.867	3.35888e-05
+493.059	3.31318e-05
+501.251	3.26885e-05
+509.443	3.22582e-05
+517.635	3.18403e-05
+525.827	3.14344e-05
+534.019	3.10399e-05
+542.211	3.0656e-05
+550.403	3.02818e-05
+558.595	2.99177e-05
+566.787	2.95634e-05
+574.979	2.92186e-05
+583.171	2.8883e-05
+591.363	2.85563e-05
+599.555	2.82382e-05
+607.747	2.79285e-05
+615.939	2.76269e-05
+624.131	2.7333e-05
+632.323	2.70466e-05
+640.515	2.67674e-05
+648.707	2.6495e-05
+656.899	2.62293e-05
+665.091	2.59699e-05
+681.475	2.54688e-05
+697.859	2.49896e-05
+714.243	2.45299e-05
+730.627	2.40902e-05
+747.011	2.36679e-05
+763.395	2.3261e-05
+779.779	2.28691e-05
+796.163	2.24914e-05
+812.547	2.21274e-05
+828.931	2.17766e-05
+845.315	2.14384e-05
+861.699	2.11122e-05
+878.083	2.07974e-05
+894.467	2.04935e-05
+910.851	2.01994e-05
+927.235	1.9915e-05
+943.619	1.964e-05
+960.003	1.93741e-05
+976.387	1.91167e-05
+992.771	1.88676e-05
+1009.16	1.86264e-05
+1025.54	1.83925e-05
+1041.92	1.81657e-05
+1058.31	1.79454e-05
+1074.69	1.77313e-05
+1091.08	1.75231e-05
+1107.46	1.73203e-05
+1123.84	1.71229e-05
+1140.23	1.69307e-05
+1156.61	1.67358e-05
+1173	1.65536e-05
+1189.38	1.6376e-05
+1205.76	1.62029e-05
+1222.15	1.60342e-05
+1238.53	1.58695e-05
+1254.92	1.57088e-05
+1271.3	1.5552e-05
+1304.07	1.5249e-05
+1336.84	1.496e-05
+1369.6	1.4684e-05
+1402.37	1.44203e-05
+1435.14	1.41681e-05
+1467.91	1.39266e-05
+1500.68	1.36952e-05
+1533.44	1.34732e-05
+1566.21	1.326e-05
+1598.98	1.3055e-05
+1631.75	1.28576e-05
+1664.52	1.26673e-05
+1697.28	1.24836e-05
+1730.05	1.23063e-05
+1762.82	1.21349e-05
+1795.59	1.1969e-05
+1828.36	1.18081e-05
+1861.12	1.16522e-05
+1893.89	1.15011e-05
+1926.66	1.13548e-05
+1959.43	1.12131e-05
+1992.2	1.10759e-05
+2024.96	1.0943e-05
+2057.73	1.08143e-05
+2090.5	1.06896e-05
+2123.27	1.05688e-05
+2156.04	1.04518e-05
+2188.8	1.03384e-05
+2221.57	1.02285e-05
+2254.34	1.01219e-05
+2287.11	1.00185e-05
+2319.88	9.91814e-06
+2352.64	9.82071e-06
+2418.18	9.63401e-06
+2483.72	9.45727e-06
+2549.25	9.28935e-06
+2614.79	9.12911e-06
+2680.32	8.97543e-06
+2745.86	8.83067e-06
+2811.4	8.69239e-06
+2876.93	8.55896e-06
+2942.47	8.43027e-06
+3008	8.30616e-06
+3073.54	8.18652e-06
+3139.08	8.07121e-06
+3204.61	7.9601e-06
+3270.15	7.85304e-06
+3335.68	7.74992e-06
+3401.22	7.65059e-06
+3466.76	7.55493e-06
+3532.29	7.4628e-06
+3597.83	7.37407e-06
+3663.36	7.28808e-06
+3728.9	7.20521e-06
+3794.44	7.12533e-06
+3859.97	7.04832e-06
+3925.51	6.97405e-06
+3991.04	6.90239e-06
+4056.58	6.83319e-06
+4122.12	6.76633e-06
+4253.19	6.6391e-06
+4384.26	6.51963e-06
+4515.33	6.40686e-06
+4646.4	6.29986e-06
+4777.48	6.19829e-06
+4908.55	6.10185e-06
+5039.62	6.01022e-06
+5170.69	5.92311e-06
+5301.76	5.8402e-06
+5432.84	5.76115e-06
+5563.91	5.68561e-06
+5694.98	5.61354e-06
+5826.05	5.54478e-06
+5957.12	5.47915e-06
+6088.2	5.4165e-06
+6219.27	5.35666e-06
+6350.34	5.29946e-06
+6481.41	5.24475e-06
+6612.48	5.19235e-06
+6874.63	5.09385e-06
+7136.77	5.00264e-06
+7398.92	4.91816e-06
+7661.06	4.83929e-06
+7923.2	4.76551e-06
+8185.35	4.69648e-06
+8447.49	4.63188e-06
+8709.64	4.57137e-06
+8971.78	4.51462e-06
+9233.92	4.4612e-06
+9496.07	4.41096e-06
+9758.21	4.36372e-06
+10020.4	4.31924e-06
+10282.5	4.27732e-06
+10806.8	4.20023e-06
+11331.1	4.13086e-06
+11855.4	4.06827e-06
+12379.7	4.01166e-06
+12903.9	3.96024e-06
+13428.2	3.91341e-06
+13952.5	3.87069e-06
+14476.8	3.83161e-06
+15001.1	3.79575e-06
+16049.7	3.73252e-06
+17098.2	3.67878e-06
+18146.8	3.63276e-06
+19195.4	3.59541e-06
+20244	3.56327e-06
+22341.1	3.51161e-06
+24438.3	3.47296e-06
+26535.4	3.44405e-06
+30729.7	3.40679e-06
+34924	3.38785e-06
+43312.6	3.38077e-06
+60089.9	3.41885e-06
+76867.1	3.4776e-06
+93644.3	3.53896e-06
+110422	3.59791e-06
+127199	3.65312e-06
+143976	3.70442e-06
+160753	3.75203e-06
+177530	3.7963e-06
+194308	3.83757e-06
+211085	3.87616e-06
+227862	3.91236e-06
+261416	3.97858e-06
+294971	4.03789e-06
+328525	4.09152e-06
+362080	4.14044e-06
+395634	4.18537e-06
+429189	4.22691e-06
+496297	4.30158e-06
+563406	4.36724e-06
+630515	4.42578e-06
+697624	4.47859e-06
+764733	4.52667e-06
+831842	4.5708e-06
+966060	4.64941e-06
diff --git a/Examples/Example4/EnergyLossTable/proton_iC4H10_6.24151e+07_295.G4table b/Examples/Example4/EnergyLossTable/proton_iC4H10_6.24151e+07_295.G4table
new file mode 100644
index 0000000000000000000000000000000000000000..61c33adbfc1ccb9567243ff43da13f80642489fe
--- /dev/null
+++ b/Examples/Example4/EnergyLossTable/proton_iC4H10_6.24151e+07_295.G4table
@@ -0,0 +1,512 @@
+Table from Geant4 generate using NPSimulation 	Particle: proton	Material: NPS_iC4H10_6.24151e+07_295
+0	0
+0.001	6.44831e-06
+0.002	8.02227e-06
+0.003	9.39063e-06
+0.004	1.06081e-05
+0.005	1.17011e-05
+0.006	1.27095e-05
+0.007	1.36536e-05
+0.008	1.45322e-05
+0.009	1.53551e-05
+0.01	1.61394e-05
+0.011	1.68072e-05
+0.012	1.74365e-05
+0.013	1.80351e-05
+0.014	1.86043e-05
+0.015	1.91464e-05
+0.016	1.96639e-05
+0.017	2.01579e-05
+0.018	2.063e-05
+0.019	2.10847e-05
+0.02	2.15221e-05
+0.021	2.19417e-05
+0.022	2.23451e-05
+0.023	2.27336e-05
+0.024	2.31073e-05
+0.025	2.34677e-05
+0.026	2.38156e-05
+0.027	2.41509e-05
+0.028	2.44743e-05
+0.029	2.47862e-05
+0.03	2.5088e-05
+0.031	2.53796e-05
+0.032	2.56618e-05
+0.033	2.59344e-05
+0.034	2.61979e-05
+0.035	2.64527e-05
+0.037	2.69378e-05
+0.039	2.73937e-05
+0.041	2.77786e-05
+0.043	2.8056e-05
+0.047	2.85223e-05
+0.051	2.88835e-05
+0.055	2.9153e-05
+0.063	2.94607e-05
+0.071	2.95185e-05
+0.087	2.91063e-05
+0.103	2.82542e-05
+0.119	2.71758e-05
+0.135	2.60038e-05
+0.151	2.48174e-05
+0.167	2.36632e-05
+0.183	2.25662e-05
+0.199	2.15396e-05
+0.215	2.05865e-05
+0.231	1.97064e-05
+0.247	1.88958e-05
+0.263	1.81501e-05
+0.279	1.74639e-05
+0.295	1.68318e-05
+0.311	1.6249e-05
+0.327	1.57105e-05
+0.343	1.52119e-05
+0.359	1.47491e-05
+0.375	1.43188e-05
+0.391	1.39178e-05
+0.407	1.35431e-05
+0.423	1.31923e-05
+0.439	1.2863e-05
+0.455	1.25533e-05
+0.471	1.22615e-05
+0.487	1.19859e-05
+0.503	1.17253e-05
+0.519	1.14784e-05
+0.535	1.1244e-05
+0.551	1.10211e-05
+0.567	1.0809e-05
+0.583	1.06067e-05
+0.599	1.04136e-05
+0.615	1.02289e-05
+0.631	1.00521e-05
+0.647	9.88269e-06
+0.663	9.72011e-06
+0.679	9.56392e-06
+0.695	9.41374e-06
+0.711	9.26917e-06
+0.727	9.12989e-06
+0.743	8.99564e-06
+0.759	8.86606e-06
+0.775	8.74091e-06
+0.791	8.61993e-06
+0.807	8.5029e-06
+0.823	8.38961e-06
+0.839	8.27987e-06
+0.855	8.17349e-06
+0.871	8.07032e-06
+0.887	7.97019e-06
+0.903	7.87296e-06
+0.919	7.77849e-06
+0.935	7.68669e-06
+0.951	7.59741e-06
+0.967	7.51054e-06
+0.983	7.42597e-06
+0.999	7.3436e-06
+1.015	7.25704e-06
+1.031	7.1789e-06
+1.047	7.1027e-06
+1.063	7.02837e-06
+1.079	6.95582e-06
+1.095	6.88499e-06
+1.111	6.81582e-06
+1.127	6.74825e-06
+1.159	6.61764e-06
+1.191	6.49274e-06
+1.223	6.37315e-06
+1.255	6.25852e-06
+1.287	6.14852e-06
+1.319	6.04286e-06
+1.351	5.94126e-06
+1.383	5.84349e-06
+1.415	5.74932e-06
+1.447	5.65853e-06
+1.479	5.57095e-06
+1.511	5.48638e-06
+1.543	5.40467e-06
+1.575	5.32567e-06
+1.607	5.24924e-06
+1.639	5.17525e-06
+1.671	5.10356e-06
+1.703	5.03409e-06
+1.735	4.96671e-06
+1.767	4.90132e-06
+1.799	4.83784e-06
+1.831	4.77619e-06
+1.863	4.71627e-06
+1.895	4.65801e-06
+1.927	4.60134e-06
+1.959	4.54619e-06
+1.991	4.4925e-06
+2.023	4.43778e-06
+2.055	4.38359e-06
+2.087	4.33083e-06
+2.119	4.27945e-06
+2.151	4.22939e-06
+2.183	4.18061e-06
+2.215	4.13304e-06
+2.247	4.08665e-06
+2.279	4.04139e-06
+2.311	3.99722e-06
+2.343	3.95409e-06
+2.375	3.91198e-06
+2.407	3.87084e-06
+2.439	3.83065e-06
+2.471	3.7959e-06
+2.535	3.71968e-06
+2.599	3.64675e-06
+2.663	3.57689e-06
+2.727	3.50991e-06
+2.791	3.44563e-06
+2.855	3.38389e-06
+2.919	3.32453e-06
+2.983	3.26741e-06
+3.047	3.21241e-06
+3.111	3.15941e-06
+3.175	3.1083e-06
+3.239	3.05897e-06
+3.303	3.01134e-06
+3.367	2.96531e-06
+3.431	2.92081e-06
+3.495	2.87775e-06
+3.559	2.83607e-06
+3.623	2.7957e-06
+3.687	2.75657e-06
+3.751	2.71864e-06
+3.815	2.68183e-06
+3.879	2.64611e-06
+3.943	2.61142e-06
+4.007	2.57772e-06
+4.071	2.54496e-06
+4.135	2.51452e-06
+4.199	2.48346e-06
+4.263	2.45324e-06
+4.327	2.42382e-06
+4.391	2.39516e-06
+4.455	2.36724e-06
+4.519	2.34002e-06
+4.583	2.31349e-06
+4.647	2.28761e-06
+4.711	2.26236e-06
+4.775	2.23771e-06
+4.839	2.21365e-06
+4.903	2.19015e-06
+4.967	2.1672e-06
+5.031	2.14476e-06
+5.095	2.12284e-06
+5.159	2.1014e-06
+5.223	2.08043e-06
+5.351	2.03984e-06
+5.479	2.00096e-06
+5.607	1.96367e-06
+5.735	1.92874e-06
+5.863	1.8943e-06
+5.991	1.86119e-06
+6.119	1.82932e-06
+6.247	1.79862e-06
+6.375	1.76904e-06
+6.503	1.74051e-06
+6.631	1.71297e-06
+6.759	1.68636e-06
+6.887	1.66066e-06
+7.015	1.63579e-06
+7.143	1.61173e-06
+7.271	1.58844e-06
+7.399	1.56587e-06
+7.527	1.544e-06
+7.655	1.52279e-06
+7.783	1.5022e-06
+7.911	1.48222e-06
+8.039	1.46282e-06
+8.167	1.44397e-06
+8.295	1.42564e-06
+8.423	1.40783e-06
+8.551	1.39049e-06
+8.679	1.37362e-06
+8.807	1.35719e-06
+8.935	1.34119e-06
+9.063	1.3256e-06
+9.191	1.3104e-06
+9.319	1.29557e-06
+9.447	1.28111e-06
+9.575	1.267e-06
+9.703	1.25323e-06
+9.831	1.23978e-06
+9.959	1.22665e-06
+10.087	1.21382e-06
+10.215	1.20128e-06
+10.343	1.18902e-06
+10.471	1.17703e-06
+10.599	1.1653e-06
+10.855	1.14261e-06
+11.111	1.12086e-06
+11.367	1.1e-06
+11.623	1.07998e-06
+11.879	1.06075e-06
+12.135	1.04225e-06
+12.391	1.02445e-06
+12.647	1.0073e-06
+12.903	9.90775e-07
+13.159	9.74835e-07
+13.415	9.5945e-07
+13.671	9.4459e-07
+13.927	9.30228e-07
+14.183	9.1634e-07
+14.439	9.02901e-07
+14.695	8.8989e-07
+14.951	8.77285e-07
+15.207	8.65068e-07
+15.463	8.53221e-07
+15.719	8.41727e-07
+15.975	8.30569e-07
+16.231	8.19733e-07
+16.487	8.09205e-07
+16.743	7.98972e-07
+16.999	7.89021e-07
+17.255	7.7934e-07
+17.511	7.69918e-07
+17.767	7.60745e-07
+18.023	7.51811e-07
+18.279	7.43106e-07
+18.535	7.34621e-07
+18.791	7.26348e-07
+19.047	7.18279e-07
+19.303	7.10407e-07
+19.559	7.02723e-07
+19.815	6.95222e-07
+20.071	6.87896e-07
+20.327	6.8074e-07
+20.583	6.73746e-07
+20.839	6.66911e-07
+21.095	6.60228e-07
+21.351	6.53693e-07
+21.863	6.41043e-07
+22.375	6.28927e-07
+22.887	6.17309e-07
+23.399	6.06159e-07
+23.911	5.95449e-07
+24.423	5.85152e-07
+24.935	5.75246e-07
+25.447	5.65707e-07
+25.959	5.56514e-07
+26.471	5.4765e-07
+26.983	5.39096e-07
+27.495	5.30836e-07
+28.007	5.22855e-07
+28.519	5.15139e-07
+29.031	5.07674e-07
+29.543	5.00448e-07
+30.055	4.9345e-07
+30.567	4.86668e-07
+31.079	4.80093e-07
+31.591	4.73715e-07
+32.103	4.67525e-07
+32.615	4.61516e-07
+33.127	4.55678e-07
+33.639	4.50005e-07
+34.151	4.44489e-07
+34.663	4.39124e-07
+35.175	4.33904e-07
+35.687	4.28823e-07
+36.199	4.23875e-07
+36.711	4.19055e-07
+37.223	4.14358e-07
+37.735	4.09779e-07
+38.247	4.05314e-07
+38.759	4.00958e-07
+39.271	3.96708e-07
+39.783	3.92559e-07
+40.295	3.88509e-07
+40.807	3.84552e-07
+41.319	3.80687e-07
+41.831	3.7691e-07
+42.855	3.69607e-07
+43.879	3.62621e-07
+44.903	3.55932e-07
+45.927	3.49521e-07
+46.951	3.4337e-07
+47.975	3.37464e-07
+48.999	3.31788e-07
+50.023	3.26329e-07
+51.047	3.21074e-07
+52.071	3.16012e-07
+53.095	3.11133e-07
+54.119	3.06425e-07
+55.143	3.01881e-07
+56.167	2.97492e-07
+57.191	2.9325e-07
+58.215	2.89147e-07
+59.239	2.85177e-07
+60.263	2.81334e-07
+61.287	2.7761e-07
+62.311	2.74001e-07
+63.335	2.70502e-07
+64.359	2.67106e-07
+65.383	2.63811e-07
+66.407	2.6061e-07
+67.431	2.57501e-07
+68.455	2.54479e-07
+69.479	2.51541e-07
+70.503	2.48682e-07
+71.527	2.45901e-07
+72.551	2.43193e-07
+73.575	2.40556e-07
+74.599	2.37987e-07
+75.623	2.35484e-07
+76.647	2.33043e-07
+77.671	2.30663e-07
+78.695	2.28341e-07
+79.719	2.26075e-07
+81.767	2.21704e-07
+83.815	2.17535e-07
+85.863	2.13552e-07
+87.911	2.09745e-07
+89.959	2.06102e-07
+92.007	2.02612e-07
+94.055	1.99265e-07
+96.103	1.96053e-07
+98.151	1.92968e-07
+100.199	1.90002e-07
+102.247	1.87149e-07
+104.295	1.84402e-07
+106.343	1.81755e-07
+108.391	1.79203e-07
+110.439	1.76741e-07
+112.487	1.74364e-07
+114.535	1.72068e-07
+116.583	1.69849e-07
+118.631	1.67702e-07
+120.679	1.65625e-07
+122.727	1.63613e-07
+124.775	1.61665e-07
+126.823	1.59776e-07
+128.871	1.57945e-07
+130.919	1.56168e-07
+132.967	1.54443e-07
+135.015	1.52769e-07
+137.063	1.51142e-07
+139.111	1.49561e-07
+141.159	1.48024e-07
+143.207	1.46529e-07
+145.255	1.45074e-07
+149.351	1.4228e-07
+153.447	1.39628e-07
+157.543	1.37109e-07
+161.639	1.34712e-07
+165.735	1.3243e-07
+169.831	1.30253e-07
+173.927	1.28175e-07
+178.023	1.2619e-07
+182.119	1.24291e-07
+186.215	1.22472e-07
+190.311	1.20729e-07
+194.407	1.19058e-07
+198.503	1.17453e-07
+202.599	1.15912e-07
+206.695	1.14429e-07
+210.791	1.13003e-07
+214.887	1.1163e-07
+218.983	1.10307e-07
+223.079	1.09031e-07
+227.175	1.078e-07
+231.271	1.06612e-07
+235.367	1.05464e-07
+239.463	1.04355e-07
+243.559	1.03283e-07
+247.655	1.02245e-07
+251.751	1.01241e-07
+259.943	9.93253e-08
+268.135	9.75254e-08
+276.327	9.58311e-08
+284.519	9.42336e-08
+292.711	9.27249e-08
+300.903	9.1298e-08
+309.095	8.99466e-08
+317.287	8.8665e-08
+325.479	8.74482e-08
+333.671	8.62914e-08
+341.863	8.51905e-08
+350.055	8.41416e-08
+358.247	8.31413e-08
+366.439	8.21864e-08
+374.631	8.1274e-08
+382.823	8.04014e-08
+391.015	7.95663e-08
+399.207	7.87662e-08
+407.399	7.79993e-08
+423.783	7.65571e-08
+440.167	7.52261e-08
+456.551	7.39944e-08
+472.935	7.28521e-08
+489.319	7.17902e-08
+505.703	7.08011e-08
+522.087	6.9878e-08
+538.471	6.90149e-08
+554.855	6.82067e-08
+571.239	6.74487e-08
+587.623	6.67366e-08
+604.007	6.60668e-08
+620.391	6.5436e-08
+653.159	6.42795e-08
+685.927	6.32466e-08
+718.695	6.23203e-08
+751.463	6.14867e-08
+784.231	6.07341e-08
+816.999	6.00526e-08
+849.767	5.94338e-08
+882.535	5.88708e-08
+948.071	5.78882e-08
+1013.61	5.70652e-08
+1079.14	5.63718e-08
+1144.68	5.57849e-08
+1210.22	5.52863e-08
+1341.29	5.44994e-08
+1472.36	5.39264e-08
+1603.43	5.35105e-08
+1865.58	5.30041e-08
+2389.86	5.2733e-08
+3438.44	5.3332e-08
+4487.02	5.43349e-08
+5535.59	5.53758e-08
+6584.17	5.63654e-08
+7632.74	5.72845e-08
+8681.32	5.81315e-08
+9729.9	5.89129e-08
+10778.5	5.96357e-08
+11827	6.03067e-08
+12875.6	6.09321e-08
+13924.2	6.1517e-08
+16021.4	6.25832e-08
+18118.5	6.35345e-08
+20215.7	6.43923e-08
+22312.8	6.5173e-08
+24410	6.58889e-08
+26507.1	6.65498e-08
+28604.3	6.71635e-08
+32798.6	6.82727e-08
+36992.9	6.92546e-08
+41187.2	7.01349e-08
+45381.5	7.09327e-08
+49575.8	7.16619e-08
+53770.1	7.23335e-08
+62158.7	7.35357e-08
+70547.3	7.45887e-08
+78935.9	7.55255e-08
+87324.5	7.63692e-08
+95713.1	7.71369e-08
+104102	7.78413e-08
+120879	7.90968e-08
+137656	8.01921e-08
+154433	8.11641e-08
+171211	8.20383e-08
+187988	8.28331e-08
+221542	8.41355e-08
+255097	8.52011e-08
+288651	8.61212e-08
+322206	8.69308e-08
+389314	8.83083e-08
+456423	8.94571e-08
+523532	9.04467e-08
+590641	9.132e-08
+724859	9.28211e-08
+859076	9.40983e-08
+993294	9.5225e-08
diff --git a/Examples/Example4/PhysicsListOption.txt b/Examples/Example4/PhysicsListOption.txt
new file mode 100644
index 0000000000000000000000000000000000000000..52f3c3bb719e211c28f53a364d2669909dae0b1b
--- /dev/null
+++ b/Examples/Example4/PhysicsListOption.txt
@@ -0,0 +1,12 @@
+EmPhysicsList Option4
+DefaultCutOff 1
+DriftElectronPhysics 1
+IonBinaryCascadePhysics 0
+NPIonInelasticPhysics 0
+EmExtraPhysics 0
+HadronElasticPhysics 0
+StoppingPhysics 0
+OpticalPhysics 0
+HadronPhysicsINCLXX 0
+HadronPhysicsQGSP_BIC_HP 0
+Decay 0
diff --git a/Examples/Example4/README b/Examples/Example4/README
new file mode 100644
index 0000000000000000000000000000000000000000..356303d052346d18225bebdc9b27dafaf7ca9838
--- /dev/null
+++ b/Examples/Example4/README
@@ -0,0 +1,74 @@
+========================================================================
+NPTool - Nuclear Physics Tool for low energy nuclear physics experiments
+========================================================================
+
+                     --- Example 4 - ACTAR TPC --- 
+
+Example to simulate and analyse experiment using the ACTAR TPC detector
+
+1. SIMULATION
+The simulation is using the special physics list in order to transport
+the drift electron in the drift cage volume of ACTAR.
+The PhysicsListOption.txt file option should be set as follows:
+
+		EmPhysicsList Option4
+		DefaultCutOff 1
+		DriftElectronPhysics 1
+
+
+Other options should be set to 0.
+
+To run the simualtion, do es follow in the NPSimulation folder:
+> npsimulation -D Example4.detector -E Example4.reaction -O Example4
+
+A gui will launch and type
+/run/beamOn 10000 (for example) 
+The simulation is slow due to the transport of the drift electrons and is
+about 3 to 4 evt/sec
+
+One can use the Run.mac file in batch mode in order to speed up the Simulation
+> npsimulation -D Example4.detector -E Example4.reaction -O Example4 -B Run.mac
+
+
+Example4.detector is loacted in Inputs/DetectorConfiguration and enable to 
+choose the gas composition and the pressure for example. In this example 
+we run with iC4H10 gas at 100 mbar.
+It also allows us to add ancilary detector such as silicon detector at 
+forward angle. This is the case is this example.
+
+Example4.reaction is located in Inputs/Event generator and specify the 
+event we want to simulate. In this example we simulate the elastic scattering
+of a 18O entering in ACTAR a 59.4 MeV on a proton target.
+
+The output root file is called Example4.root and will be located in Outputs/Simualtion
+
+2. ANALYSIS
+To analyse the simulated root tree compile the Example4 folder byt running
+> cmake ./
+then
+>make
+
+To run the analysis type in the Example4 folder:
+> npanalysis -R RunToTreat.txt -O Example4
+Or:
+> npanalysis --last-sim -O Example4   
+
+And output root file will be generated and located in Outputs/Analysis.
+If one wants to see the fitted tracks will runnign the analysis, please make sure 
+that the token in configs/ConfigActar.dat called RecoVisu is set to 1:
+RecoVisu= 1
+If this is the case run the hclient.C macro in another terminal's window.
+A canvas should appear with the found tracks and their 3D fit.
+
+3. MACRO
+Sevaral root macro are located in Example4/macro to check the result of the analysis
+and the obtained vertex, angular and energy resolution.
+
+
+
+
+
+
+
+
+
diff --git a/Examples/Example4/RunToTreat.txt b/Examples/Example4/RunToTreat.txt
new file mode 100644
index 0000000000000000000000000000000000000000..215f7fa266c30ca306a7988493cc088ff810a116
--- /dev/null
+++ b/Examples/Example4/RunToTreat.txt
@@ -0,0 +1,4 @@
+TTreeName
+	SimulatedTree
+RootFileName
+	../../Outputs/Simulation/Example4.root
diff --git a/Examples/Example4/configs/ACTION_Si_config.dat b/Examples/Example4/configs/ACTION_Si_config.dat
new file mode 100644
index 0000000000000000000000000000000000000000..6d785a0503b8d3f31a0395267a07b27a80f52c73
--- /dev/null
+++ b/Examples/Example4/configs/ACTION_Si_config.dat
@@ -0,0 +1,25 @@
+Si_0                                   31                  0 
+Si_1                                   33                  1  
+Si_2                     				       35	                 2
+Si_3                                   8                   3               
+Si_4                                   9                   4               
+Si_5                                   10                  5                             
+Si_6                                   34                  6
+Si_7                                   12                  7               
+Si_8                                   13                  8               
+Si_9                                   32                  9  
+Si_10                                  29                  10
+Si_11                                  16                  11               
+Si_12                                  17                  12               
+Si_13                                  18                  13               
+Si_14                                  19                  14                             
+Si_15                                  27                  15
+Si_16                                  22                  16               
+Si_17                                  23                  17               
+Si_18                                  24                  18                                                                                      
+Si_19                                  14                  19            
+             
+               
+            
+              
+              
diff --git a/Examples/Example4/configs/ConfigActar.dat b/Examples/Example4/configs/ConfigActar.dat
new file mode 100644
index 0000000000000000000000000000000000000000..e02d7cd310365f382188fb69d93bebaf20968da5
--- /dev/null
+++ b/Examples/Example4/configs/ConfigActar.dat
@@ -0,0 +1,15 @@
+ConfigActar
+RecoRansac= 1
+RecoVisu= 1
+HIT_THRESHOLD= 2
+Q_THRESHOLD= 0
+T_THRESHOLD= 0
+NumberOfPadsX= 128
+NumberOfPadsY= 128
+PadSizeX= 2
+PadSizeY= 2
+Gas= iC4H10
+%Gas= D2
+%Pressure in mbar
+Pressure= 100
+DriftVelocity= 2.66
diff --git a/Examples/Example4/configs/LT.dat b/Examples/Example4/configs/LT.dat
new file mode 100644
index 0000000000000000000000000000000000000000..113841f3bf7fdac195df67d39c3fd71af9689bc7
--- /dev/null
+++ b/Examples/Example4/configs/LT.dat
@@ -0,0 +1,17408 @@
+0	0	0	0		0	32
+0	0	0	1		1	32
+0	0	0	2		0	33
+0	0	0	3		1	33
+0	0	0	4		0	34
+0	0	0	5		1	34
+0	0	0	6		0	35
+0	0	0	7		1	35
+0	0	0	8		0	36
+0	0	0	9		1	36
+0	0	0	10		0	37
+0	0	0	11		-1	-1
+0	0	0	12		1	37
+0	0	0	13		0	38
+0	0	0	14		1	38
+0	0	0	15		0	39
+0	0	0	16		1	39
+0	0	0	17		0	40
+0	0	0	18		1	40
+0	0	0	19		0	41
+0	0	0	20		1	41
+0	0	0	21		0	42
+0	0	0	22		-1	-1
+0	0	0	23		1	42
+0	0	0	24		0	43
+0	0	0	25		1	43
+0	0	0	26		0	44
+0	0	0	27		1	44
+0	0	0	28		0	45
+0	0	0	29		1	45
+0	0	0	30		0	46
+0	0	0	31		1	46
+0	0	0	32		0	47
+0	0	0	33		1	47
+0	0	0	34		0	48
+0	0	0	35		1	48
+0	0	0	36		0	49
+0	0	0	37		1	49
+0	0	0	38		0	50
+0	0	0	39		1	50
+0	0	0	40		0	51
+0	0	0	41		1	51
+0	0	0	42		0	52
+0	0	0	43		1	52
+0	0	0	44		0	53
+0	0	0	45		-1	-1
+0	0	0	46		1	53
+0	0	0	47		0	54
+0	0	0	48		1	54
+0	0	0	49		0	55
+0	0	0	50		1	55
+0	0	0	51		0	56
+0	0	0	52		1	56
+0	0	0	53		0	57
+0	0	0	54		1	57
+0	0	0	55		0	58
+0	0	0	56		-1	-1
+0	0	0	57		1	58
+0	0	0	58		0	59
+0	0	0	59		1	59
+0	0	0	60		0	60
+0	0	0	61		1	60
+0	0	0	62		0	61
+0	0	0	63		1	61
+0	0	0	64		0	62
+0	0	0	65		1	62
+0	0	0	66		0	63
+0	0	0	67		1	63
+0	0	1	0		0	0
+0	0	1	1		1	0
+0	0	1	2		0	1
+0	0	1	3		1	1
+0	0	1	4		0	2
+0	0	1	5		1	2
+0	0	1	6		0	3
+0	0	1	7		1	3
+0	0	1	8		0	4
+0	0	1	9		1	4
+0	0	1	10		0	5
+0	0	1	11		-1	-1
+0	0	1	12		1	5
+0	0	1	13		0	6
+0	0	1	14		1	6
+0	0	1	15		0	7
+0	0	1	16		1	7
+0	0	1	17		0	8
+0	0	1	18		1	8
+0	0	1	19		0	9
+0	0	1	20		1	9
+0	0	1	21		0	10
+0	0	1	22		-1	-1
+0	0	1	23		1	10
+0	0	1	24		0	11
+0	0	1	25		1	11
+0	0	1	26		0	12
+0	0	1	27		1	12
+0	0	1	28		0	13
+0	0	1	29		1	13
+0	0	1	30		0	14
+0	0	1	31		1	14
+0	0	1	32		0	15
+0	0	1	33		1	15
+0	0	1	34		0	16
+0	0	1	35		1	16
+0	0	1	36		0	17
+0	0	1	37		1	17
+0	0	1	38		0	18
+0	0	1	39		1	18
+0	0	1	40		0	19
+0	0	1	41		1	19
+0	0	1	42		0	20
+0	0	1	43		1	20
+0	0	1	44		0	21
+0	0	1	45		-1	-1
+0	0	1	46		1	21
+0	0	1	47		0	22
+0	0	1	48		1	22
+0	0	1	49		0	23
+0	0	1	50		1	23
+0	0	1	51		0	24
+0	0	1	52		1	24
+0	0	1	53		0	25
+0	0	1	54		1	25
+0	0	1	55		0	26
+0	0	1	56		-1	-1
+0	0	1	57		1	26
+0	0	1	58		0	27
+0	0	1	59		1	27
+0	0	1	60		0	28
+0	0	1	61		1	28
+0	0	1	62		0	29
+0	0	1	63		1	29
+0	0	1	64		0	30
+0	0	1	65		1	30
+0	0	1	66		0	31
+0	0	1	67		1	31
+0	0	2	0		2	32
+0	0	2	1		3	32
+0	0	2	2		2	33
+0	0	2	3		3	33
+0	0	2	4		2	34
+0	0	2	5		3	34
+0	0	2	6		2	35
+0	0	2	7		3	35
+0	0	2	8		2	36
+0	0	2	9		3	36
+0	0	2	10		2	37
+0	0	2	11		-1	-1
+0	0	2	12		3	37
+0	0	2	13		2	38
+0	0	2	14		3	38
+0	0	2	15		2	39
+0	0	2	16		3	39
+0	0	2	17		2	40
+0	0	2	18		3	40
+0	0	2	19		2	41
+0	0	2	20		3	41
+0	0	2	21		2	42
+0	0	2	22		-1	-1
+0	0	2	23		3	42
+0	0	2	24		2	43
+0	0	2	25		3	43
+0	0	2	26		2	44
+0	0	2	27		3	44
+0	0	2	28		2	45
+0	0	2	29		3	45
+0	0	2	30		2	46
+0	0	2	31		3	46
+0	0	2	32		2	47
+0	0	2	33		3	47
+0	0	2	34		2	48
+0	0	2	35		3	48
+0	0	2	36		2	49
+0	0	2	37		3	49
+0	0	2	38		2	50
+0	0	2	39		3	50
+0	0	2	40		2	51
+0	0	2	41		3	51
+0	0	2	42		2	52
+0	0	2	43		3	52
+0	0	2	44		2	53
+0	0	2	45		-1	-1
+0	0	2	46		3	53
+0	0	2	47		2	54
+0	0	2	48		3	54
+0	0	2	49		2	55
+0	0	2	50		3	55
+0	0	2	51		2	56
+0	0	2	52		3	56
+0	0	2	53		2	57
+0	0	2	54		3	57
+0	0	2	55		2	58
+0	0	2	56		-1	-1
+0	0	2	57		3	58
+0	0	2	58		2	59
+0	0	2	59		3	59
+0	0	2	60		2	60
+0	0	2	61		3	60
+0	0	2	62		2	61
+0	0	2	63		3	61
+0	0	2	64		2	62
+0	0	2	65		3	62
+0	0	2	66		2	63
+0	0	2	67		3	63
+0	0	3	0		2	0
+0	0	3	1		3	0
+0	0	3	2		2	1
+0	0	3	3		3	1
+0	0	3	4		2	2
+0	0	3	5		3	2
+0	0	3	6		2	3
+0	0	3	7		3	3
+0	0	3	8		2	4
+0	0	3	9		3	4
+0	0	3	10		2	5
+0	0	3	11		-1	-1
+0	0	3	12		3	5
+0	0	3	13		2	6
+0	0	3	14		3	6
+0	0	3	15		2	7
+0	0	3	16		3	7
+0	0	3	17		2	8
+0	0	3	18		3	8
+0	0	3	19		2	9
+0	0	3	20		3	9
+0	0	3	21		2	10
+0	0	3	22		-1	-1
+0	0	3	23		3	10
+0	0	3	24		2	11
+0	0	3	25		3	11
+0	0	3	26		2	12
+0	0	3	27		3	12
+0	0	3	28		2	13
+0	0	3	29		3	13
+0	0	3	30		2	14
+0	0	3	31		3	14
+0	0	3	32		2	15
+0	0	3	33		3	15
+0	0	3	34		2	16
+0	0	3	35		3	16
+0	0	3	36		2	17
+0	0	3	37		3	17
+0	0	3	38		2	18
+0	0	3	39		3	18
+0	0	3	40		2	19
+0	0	3	41		3	19
+0	0	3	42		2	20
+0	0	3	43		3	20
+0	0	3	44		2	21
+0	0	3	45		-1	-1
+0	0	3	46		3	21
+0	0	3	47		2	22
+0	0	3	48		3	22
+0	0	3	49		2	23
+0	0	3	50		3	23
+0	0	3	51		2	24
+0	0	3	52		3	24
+0	0	3	53		2	25
+0	0	3	54		3	25
+0	0	3	55		2	26
+0	0	3	56		-1	-1
+0	0	3	57		3	26
+0	0	3	58		2	27
+0	0	3	59		3	27
+0	0	3	60		2	28
+0	0	3	61		3	28
+0	0	3	62		2	29
+0	0	3	63		3	29
+0	0	3	64		2	30
+0	0	3	65		3	30
+0	0	3	66		2	31
+0	0	3	67		3	31
+0	1	0	0		3	95
+0	1	0	1		2	95
+0	1	0	2		3	94
+0	1	0	3		2	94
+0	1	0	4		3	93
+0	1	0	5		2	93
+0	1	0	6		3	92
+0	1	0	7		2	92
+0	1	0	8		3	91
+0	1	0	9		2	91
+0	1	0	10		3	90
+0	1	0	11		-1	-1
+0	1	0	12		2	90
+0	1	0	13		3	89
+0	1	0	14		2	89
+0	1	0	15		3	88
+0	1	0	16		2	88
+0	1	0	17		3	87
+0	1	0	18		2	87
+0	1	0	19		3	86
+0	1	0	20		2	86
+0	1	0	21		3	85
+0	1	0	22		-1	-1
+0	1	0	23		2	85
+0	1	0	24		3	84
+0	1	0	25		2	84
+0	1	0	26		3	83
+0	1	0	27		2	83
+0	1	0	28		3	82
+0	1	0	29		2	82
+0	1	0	30		3	81
+0	1	0	31		2	81
+0	1	0	32		3	80
+0	1	0	33		2	80
+0	1	0	34		3	79
+0	1	0	35		2	79
+0	1	0	36		3	78
+0	1	0	37		2	78
+0	1	0	38		3	77
+0	1	0	39		2	77
+0	1	0	40		3	76
+0	1	0	41		2	76
+0	1	0	42		3	75
+0	1	0	43		2	75
+0	1	0	44		3	74
+0	1	0	45		-1	-1
+0	1	0	46		2	74
+0	1	0	47		3	73
+0	1	0	48		2	73
+0	1	0	49		3	72
+0	1	0	50		2	72
+0	1	0	51		3	71
+0	1	0	52		2	71
+0	1	0	53		3	70
+0	1	0	54		2	70
+0	1	0	55		3	69
+0	1	0	56		-1	-1
+0	1	0	57		2	69
+0	1	0	58		3	68
+0	1	0	59		2	68
+0	1	0	60		3	67
+0	1	0	61		2	67
+0	1	0	62		3	66
+0	1	0	63		2	66
+0	1	0	64		3	65
+0	1	0	65		2	65
+0	1	0	66		3	64
+0	1	0	67		2	64
+0	1	1	0		3	127
+0	1	1	1		2	127
+0	1	1	2		3	126
+0	1	1	3		2	126
+0	1	1	4		3	125
+0	1	1	5		2	125
+0	1	1	6		3	124
+0	1	1	7		2	124
+0	1	1	8		3	123
+0	1	1	9		2	123
+0	1	1	10		3	122
+0	1	1	11		-1	-1
+0	1	1	12		2	122
+0	1	1	13		3	121
+0	1	1	14		2	121
+0	1	1	15		3	120
+0	1	1	16		2	120
+0	1	1	17		3	119
+0	1	1	18		2	119
+0	1	1	19		3	118
+0	1	1	20		2	118
+0	1	1	21		3	117
+0	1	1	22		-1	-1
+0	1	1	23		2	117
+0	1	1	24		3	116
+0	1	1	25		2	116
+0	1	1	26		3	115
+0	1	1	27		2	115
+0	1	1	28		3	114
+0	1	1	29		2	114
+0	1	1	30		3	113
+0	1	1	31		2	113
+0	1	1	32		3	112
+0	1	1	33		2	112
+0	1	1	34		3	111
+0	1	1	35		2	111
+0	1	1	36		3	110
+0	1	1	37		2	110
+0	1	1	38		3	109
+0	1	1	39		2	109
+0	1	1	40		3	108
+0	1	1	41		2	108
+0	1	1	42		3	107
+0	1	1	43		2	107
+0	1	1	44		3	106
+0	1	1	45		-1	-1
+0	1	1	46		2	106
+0	1	1	47		3	105
+0	1	1	48		2	105
+0	1	1	49		3	104
+0	1	1	50		2	104
+0	1	1	51		3	103
+0	1	1	52		2	103
+0	1	1	53		3	102
+0	1	1	54		2	102
+0	1	1	55		3	101
+0	1	1	56		-1	-1
+0	1	1	57		2	101
+0	1	1	58		3	100
+0	1	1	59		2	100
+0	1	1	60		3	99
+0	1	1	61		2	99
+0	1	1	62		3	98
+0	1	1	63		2	98
+0	1	1	64		3	97
+0	1	1	65		2	97
+0	1	1	66		3	96
+0	1	1	67		2	96
+0	1	2	0		1	95
+0	1	2	1		0	95
+0	1	2	2		1	94
+0	1	2	3		0	94
+0	1	2	4		1	93
+0	1	2	5		0	93
+0	1	2	6		1	92
+0	1	2	7		0	92
+0	1	2	8		1	91
+0	1	2	9		0	91
+0	1	2	10		1	90
+0	1	2	11		-1	-1
+0	1	2	12		0	90
+0	1	2	13		1	89
+0	1	2	14		0	89
+0	1	2	15		1	88
+0	1	2	16		0	88
+0	1	2	17		1	87
+0	1	2	18		0	87
+0	1	2	19		1	86
+0	1	2	20		0	86
+0	1	2	21		1	85
+0	1	2	22		-1	-1
+0	1	2	23		0	85
+0	1	2	24		1	84
+0	1	2	25		0	84
+0	1	2	26		1	83
+0	1	2	27		0	83
+0	1	2	28		1	82
+0	1	2	29		0	82
+0	1	2	30		1	81
+0	1	2	31		0	81
+0	1	2	32		1	80
+0	1	2	33		0	80
+0	1	2	34		1	79
+0	1	2	35		0	79
+0	1	2	36		1	78
+0	1	2	37		0	78
+0	1	2	38		1	77
+0	1	2	39		0	77
+0	1	2	40		1	76
+0	1	2	41		0	76
+0	1	2	42		1	75
+0	1	2	43		0	75
+0	1	2	44		1	74
+0	1	2	45		-1	-1
+0	1	2	46		0	74
+0	1	2	47		1	73
+0	1	2	48		0	73
+0	1	2	49		1	72
+0	1	2	50		0	72
+0	1	2	51		1	71
+0	1	2	52		0	71
+0	1	2	53		1	70
+0	1	2	54		0	70
+0	1	2	55		1	69
+0	1	2	56		-1	-1
+0	1	2	57		0	69
+0	1	2	58		1	68
+0	1	2	59		0	68
+0	1	2	60		1	67
+0	1	2	61		0	67
+0	1	2	62		1	66
+0	1	2	63		0	66
+0	1	2	64		1	65
+0	1	2	65		0	65
+0	1	2	66		1	64
+0	1	2	67		0	64
+0	1	3	0		1	127
+0	1	3	1		0	127
+0	1	3	2		1	126
+0	1	3	3		0	126
+0	1	3	4		1	125
+0	1	3	5		0	125
+0	1	3	6		1	124
+0	1	3	7		0	124
+0	1	3	8		1	123
+0	1	3	9		0	123
+0	1	3	10		1	122
+0	1	3	11		-1	-1
+0	1	3	12		0	122
+0	1	3	13		1	121
+0	1	3	14		0	121
+0	1	3	15		1	120
+0	1	3	16		0	120
+0	1	3	17		1	119
+0	1	3	18		0	119
+0	1	3	19		1	118
+0	1	3	20		0	118
+0	1	3	21		1	117
+0	1	3	22		-1	-1
+0	1	3	23		0	117
+0	1	3	24		1	116
+0	1	3	25		0	116
+0	1	3	26		1	115
+0	1	3	27		0	115
+0	1	3	28		1	114
+0	1	3	29		0	114
+0	1	3	30		1	113
+0	1	3	31		0	113
+0	1	3	32		1	112
+0	1	3	33		0	112
+0	1	3	34		1	111
+0	1	3	35		0	111
+0	1	3	36		1	110
+0	1	3	37		0	110
+0	1	3	38		1	109
+0	1	3	39		0	109
+0	1	3	40		1	108
+0	1	3	41		0	108
+0	1	3	42		1	107
+0	1	3	43		0	107
+0	1	3	44		1	106
+0	1	3	45		-1	-1
+0	1	3	46		0	106
+0	1	3	47		1	105
+0	1	3	48		0	105
+0	1	3	49		1	104
+0	1	3	50		0	104
+0	1	3	51		1	103
+0	1	3	52		0	103
+0	1	3	53		1	102
+0	1	3	54		0	102
+0	1	3	55		1	101
+0	1	3	56		-1	-1
+0	1	3	57		0	101
+0	1	3	58		1	100
+0	1	3	59		0	100
+0	1	3	60		1	99
+0	1	3	61		0	99
+0	1	3	62		1	98
+0	1	3	63		0	98
+0	1	3	64		1	97
+0	1	3	65		0	97
+0	1	3	66		1	96
+0	1	3	67		0	96
+0	2	0	0		4	32
+0	2	0	1		5	32
+0	2	0	2		4	33
+0	2	0	3		5	33
+0	2	0	4		4	34
+0	2	0	5		5	34
+0	2	0	6		4	35
+0	2	0	7		5	35
+0	2	0	8		4	36
+0	2	0	9		5	36
+0	2	0	10		4	37
+0	2	0	11		-1	-1
+0	2	0	12		5	37
+0	2	0	13		4	38
+0	2	0	14		5	38
+0	2	0	15		4	39
+0	2	0	16		5	39
+0	2	0	17		4	40
+0	2	0	18		5	40
+0	2	0	19		4	41
+0	2	0	20		5	41
+0	2	0	21		4	42
+0	2	0	22		-1	-1
+0	2	0	23		5	42
+0	2	0	24		4	43
+0	2	0	25		5	43
+0	2	0	26		4	44
+0	2	0	27		5	44
+0	2	0	28		4	45
+0	2	0	29		5	45
+0	2	0	30		4	46
+0	2	0	31		5	46
+0	2	0	32		4	47
+0	2	0	33		5	47
+0	2	0	34		4	48
+0	2	0	35		5	48
+0	2	0	36		4	49
+0	2	0	37		5	49
+0	2	0	38		4	50
+0	2	0	39		5	50
+0	2	0	40		4	51
+0	2	0	41		5	51
+0	2	0	42		4	52
+0	2	0	43		5	52
+0	2	0	44		4	53
+0	2	0	45		-1	-1
+0	2	0	46		5	53
+0	2	0	47		4	54
+0	2	0	48		5	54
+0	2	0	49		4	55
+0	2	0	50		5	55
+0	2	0	51		4	56
+0	2	0	52		5	56
+0	2	0	53		4	57
+0	2	0	54		5	57
+0	2	0	55		4	58
+0	2	0	56		-1	-1
+0	2	0	57		5	58
+0	2	0	58		4	59
+0	2	0	59		5	59
+0	2	0	60		4	60
+0	2	0	61		5	60
+0	2	0	62		4	61
+0	2	0	63		5	61
+0	2	0	64		4	62
+0	2	0	65		5	62
+0	2	0	66		4	63
+0	2	0	67		5	63
+0	2	1	0		4	0
+0	2	1	1		5	0
+0	2	1	2		4	1
+0	2	1	3		5	1
+0	2	1	4		4	2
+0	2	1	5		5	2
+0	2	1	6		4	3
+0	2	1	7		5	3
+0	2	1	8		4	4
+0	2	1	9		5	4
+0	2	1	10		4	5
+0	2	1	11		-1	-1
+0	2	1	12		5	5
+0	2	1	13		4	6
+0	2	1	14		5	6
+0	2	1	15		4	7
+0	2	1	16		5	7
+0	2	1	17		4	8
+0	2	1	18		5	8
+0	2	1	19		4	9
+0	2	1	20		5	9
+0	2	1	21		4	10
+0	2	1	22		-1	-1
+0	2	1	23		5	10
+0	2	1	24		4	11
+0	2	1	25		5	11
+0	2	1	26		4	12
+0	2	1	27		5	12
+0	2	1	28		4	13
+0	2	1	29		5	13
+0	2	1	30		4	14
+0	2	1	31		5	14
+0	2	1	32		4	15
+0	2	1	33		5	15
+0	2	1	34		4	16
+0	2	1	35		5	16
+0	2	1	36		4	17
+0	2	1	37		5	17
+0	2	1	38		4	18
+0	2	1	39		5	18
+0	2	1	40		4	19
+0	2	1	41		5	19
+0	2	1	42		4	20
+0	2	1	43		5	20
+0	2	1	44		4	21
+0	2	1	45		-1	-1
+0	2	1	46		5	21
+0	2	1	47		4	22
+0	2	1	48		5	22
+0	2	1	49		4	23
+0	2	1	50		5	23
+0	2	1	51		4	24
+0	2	1	52		5	24
+0	2	1	53		4	25
+0	2	1	54		5	25
+0	2	1	55		4	26
+0	2	1	56		-1	-1
+0	2	1	57		5	26
+0	2	1	58		4	27
+0	2	1	59		5	27
+0	2	1	60		4	28
+0	2	1	61		5	28
+0	2	1	62		4	29
+0	2	1	63		5	29
+0	2	1	64		4	30
+0	2	1	65		5	30
+0	2	1	66		4	31
+0	2	1	67		5	31
+0	2	2	0		6	32
+0	2	2	1		7	32
+0	2	2	2		6	33
+0	2	2	3		7	33
+0	2	2	4		6	34
+0	2	2	5		7	34
+0	2	2	6		6	35
+0	2	2	7		7	35
+0	2	2	8		6	36
+0	2	2	9		7	36
+0	2	2	10		6	37
+0	2	2	11		-1	-1
+0	2	2	12		7	37
+0	2	2	13		6	38
+0	2	2	14		7	38
+0	2	2	15		6	39
+0	2	2	16		7	39
+0	2	2	17		6	40
+0	2	2	18		7	40
+0	2	2	19		6	41
+0	2	2	20		7	41
+0	2	2	21		6	42
+0	2	2	22		-1	-1
+0	2	2	23		7	42
+0	2	2	24		6	43
+0	2	2	25		7	43
+0	2	2	26		6	44
+0	2	2	27		7	44
+0	2	2	28		6	45
+0	2	2	29		7	45
+0	2	2	30		6	46
+0	2	2	31		7	46
+0	2	2	32		6	47
+0	2	2	33		7	47
+0	2	2	34		6	48
+0	2	2	35		7	48
+0	2	2	36		6	49
+0	2	2	37		7	49
+0	2	2	38		6	50
+0	2	2	39		7	50
+0	2	2	40		6	51
+0	2	2	41		7	51
+0	2	2	42		6	52
+0	2	2	43		7	52
+0	2	2	44		6	53
+0	2	2	45		-1	-1
+0	2	2	46		7	53
+0	2	2	47		6	54
+0	2	2	48		7	54
+0	2	2	49		6	55
+0	2	2	50		7	55
+0	2	2	51		6	56
+0	2	2	52		7	56
+0	2	2	53		6	57
+0	2	2	54		7	57
+0	2	2	55		6	58
+0	2	2	56		-1	-1
+0	2	2	57		7	58
+0	2	2	58		6	59
+0	2	2	59		7	59
+0	2	2	60		6	60
+0	2	2	61		7	60
+0	2	2	62		6	61
+0	2	2	63		7	61
+0	2	2	64		6	62
+0	2	2	65		7	62
+0	2	2	66		6	63
+0	2	2	67		7	63
+0	2	3	0		6	0
+0	2	3	1		7	0
+0	2	3	2		6	1
+0	2	3	3		7	1
+0	2	3	4		6	2
+0	2	3	5		7	2
+0	2	3	6		6	3
+0	2	3	7		7	3
+0	2	3	8		6	4
+0	2	3	9		7	4
+0	2	3	10		6	5
+0	2	3	11		-1	-1
+0	2	3	12		7	5
+0	2	3	13		6	6
+0	2	3	14		7	6
+0	2	3	15		6	7
+0	2	3	16		7	7
+0	2	3	17		6	8
+0	2	3	18		7	8
+0	2	3	19		6	9
+0	2	3	20		7	9
+0	2	3	21		6	10
+0	2	3	22		-1	-1
+0	2	3	23		7	10
+0	2	3	24		6	11
+0	2	3	25		7	11
+0	2	3	26		6	12
+0	2	3	27		7	12
+0	2	3	28		6	13
+0	2	3	29		7	13
+0	2	3	30		6	14
+0	2	3	31		7	14
+0	2	3	32		6	15
+0	2	3	33		7	15
+0	2	3	34		6	16
+0	2	3	35		7	16
+0	2	3	36		6	17
+0	2	3	37		7	17
+0	2	3	38		6	18
+0	2	3	39		7	18
+0	2	3	40		6	19
+0	2	3	41		7	19
+0	2	3	42		6	20
+0	2	3	43		7	20
+0	2	3	44		6	21
+0	2	3	45		-1	-1
+0	2	3	46		7	21
+0	2	3	47		6	22
+0	2	3	48		7	22
+0	2	3	49		6	23
+0	2	3	50		7	23
+0	2	3	51		6	24
+0	2	3	52		7	24
+0	2	3	53		6	25
+0	2	3	54		7	25
+0	2	3	55		6	26
+0	2	3	56		-1	-1
+0	2	3	57		7	26
+0	2	3	58		6	27
+0	2	3	59		7	27
+0	2	3	60		6	28
+0	2	3	61		7	28
+0	2	3	62		6	29
+0	2	3	63		7	29
+0	2	3	64		6	30
+0	2	3	65		7	30
+0	2	3	66		6	31
+0	2	3	67		7	31
+0	3	0	0		7	95
+0	3	0	1		6	95
+0	3	0	2		7	94
+0	3	0	3		6	94
+0	3	0	4		7	93
+0	3	0	5		6	93
+0	3	0	6		7	92
+0	3	0	7		6	92
+0	3	0	8		7	91
+0	3	0	9		6	91
+0	3	0	10		7	90
+0	3	0	11		-1	-1
+0	3	0	12		6	90
+0	3	0	13		7	89
+0	3	0	14		6	89
+0	3	0	15		7	88
+0	3	0	16		6	88
+0	3	0	17		7	87
+0	3	0	18		6	87
+0	3	0	19		7	86
+0	3	0	20		6	86
+0	3	0	21		7	85
+0	3	0	22		-1	-1
+0	3	0	23		6	85
+0	3	0	24		7	84
+0	3	0	25		6	84
+0	3	0	26		7	83
+0	3	0	27		6	83
+0	3	0	28		7	82
+0	3	0	29		6	82
+0	3	0	30		7	81
+0	3	0	31		6	81
+0	3	0	32		7	80
+0	3	0	33		6	80
+0	3	0	34		7	79
+0	3	0	35		6	79
+0	3	0	36		7	78
+0	3	0	37		6	78
+0	3	0	38		7	77
+0	3	0	39		6	77
+0	3	0	40		7	76
+0	3	0	41		6	76
+0	3	0	42		7	75
+0	3	0	43		6	75
+0	3	0	44		7	74
+0	3	0	45		-1	-1
+0	3	0	46		6	74
+0	3	0	47		7	73
+0	3	0	48		6	73
+0	3	0	49		7	72
+0	3	0	50		6	72
+0	3	0	51		7	71
+0	3	0	52		6	71
+0	3	0	53		7	70
+0	3	0	54		6	70
+0	3	0	55		7	69
+0	3	0	56		-1	-1
+0	3	0	57		6	69
+0	3	0	58		7	68
+0	3	0	59		6	68
+0	3	0	60		7	67
+0	3	0	61		6	67
+0	3	0	62		7	66
+0	3	0	63		6	66
+0	3	0	64		7	65
+0	3	0	65		6	65
+0	3	0	66		7	64
+0	3	0	67		6	64
+0	3	1	0		7	127
+0	3	1	1		6	127
+0	3	1	2		7	126
+0	3	1	3		6	126
+0	3	1	4		7	125
+0	3	1	5		6	125
+0	3	1	6		7	124
+0	3	1	7		6	124
+0	3	1	8		7	123
+0	3	1	9		6	123
+0	3	1	10		7	122
+0	3	1	11		-1	-1
+0	3	1	12		6	122
+0	3	1	13		7	121
+0	3	1	14		6	121
+0	3	1	15		7	120
+0	3	1	16		6	120
+0	3	1	17		7	119
+0	3	1	18		6	119
+0	3	1	19		7	118
+0	3	1	20		6	118
+0	3	1	21		7	117
+0	3	1	22		-1	-1
+0	3	1	23		6	117
+0	3	1	24		7	116
+0	3	1	25		6	116
+0	3	1	26		7	115
+0	3	1	27		6	115
+0	3	1	28		7	114
+0	3	1	29		6	114
+0	3	1	30		7	113
+0	3	1	31		6	113
+0	3	1	32		7	112
+0	3	1	33		6	112
+0	3	1	34		7	111
+0	3	1	35		6	111
+0	3	1	36		7	110
+0	3	1	37		6	110
+0	3	1	38		7	109
+0	3	1	39		6	109
+0	3	1	40		7	108
+0	3	1	41		6	108
+0	3	1	42		7	107
+0	3	1	43		6	107
+0	3	1	44		7	106
+0	3	1	45		-1	-1
+0	3	1	46		6	106
+0	3	1	47		7	105
+0	3	1	48		6	105
+0	3	1	49		7	104
+0	3	1	50		6	104
+0	3	1	51		7	103
+0	3	1	52		6	103
+0	3	1	53		7	102
+0	3	1	54		6	102
+0	3	1	55		7	101
+0	3	1	56		-1	-1
+0	3	1	57		6	101
+0	3	1	58		7	100
+0	3	1	59		6	100
+0	3	1	60		7	99
+0	3	1	61		6	99
+0	3	1	62		7	98
+0	3	1	63		6	98
+0	3	1	64		7	97
+0	3	1	65		6	97
+0	3	1	66		7	96
+0	3	1	67		6	96
+0	3	2	0		5	95
+0	3	2	1		4	95
+0	3	2	2		5	94
+0	3	2	3		4	94
+0	3	2	4		5	93
+0	3	2	5		4	93
+0	3	2	6		5	92
+0	3	2	7		4	92
+0	3	2	8		5	91
+0	3	2	9		4	91
+0	3	2	10		5	90
+0	3	2	11		-1	-1
+0	3	2	12		4	90
+0	3	2	13		5	89
+0	3	2	14		4	89
+0	3	2	15		5	88
+0	3	2	16		4	88
+0	3	2	17		5	87
+0	3	2	18		4	87
+0	3	2	19		5	86
+0	3	2	20		4	86
+0	3	2	21		5	85
+0	3	2	22		-1	-1
+0	3	2	23		4	85
+0	3	2	24		5	84
+0	3	2	25		4	84
+0	3	2	26		5	83
+0	3	2	27		4	83
+0	3	2	28		5	82
+0	3	2	29		4	82
+0	3	2	30		5	81
+0	3	2	31		4	81
+0	3	2	32		5	80
+0	3	2	33		4	80
+0	3	2	34		5	79
+0	3	2	35		4	79
+0	3	2	36		5	78
+0	3	2	37		4	78
+0	3	2	38		5	77
+0	3	2	39		4	77
+0	3	2	40		5	76
+0	3	2	41		4	76
+0	3	2	42		5	75
+0	3	2	43		4	75
+0	3	2	44		5	74
+0	3	2	45		-1	-1
+0	3	2	46		4	74
+0	3	2	47		5	73
+0	3	2	48		4	73
+0	3	2	49		5	72
+0	3	2	50		4	72
+0	3	2	51		5	71
+0	3	2	52		4	71
+0	3	2	53		5	70
+0	3	2	54		4	70
+0	3	2	55		5	69
+0	3	2	56		-1	-1
+0	3	2	57		4	69
+0	3	2	58		5	68
+0	3	2	59		4	68
+0	3	2	60		5	67
+0	3	2	61		4	67
+0	3	2	62		5	66
+0	3	2	63		4	66
+0	3	2	64		5	65
+0	3	2	65		4	65
+0	3	2	66		5	64
+0	3	2	67		4	64
+0	3	3	0		5	127
+0	3	3	1		4	127
+0	3	3	2		5	126
+0	3	3	3		4	126
+0	3	3	4		5	125
+0	3	3	5		4	125
+0	3	3	6		5	124
+0	3	3	7		4	124
+0	3	3	8		5	123
+0	3	3	9		4	123
+0	3	3	10		5	122
+0	3	3	11		-1	-1
+0	3	3	12		4	122
+0	3	3	13		5	121
+0	3	3	14		4	121
+0	3	3	15		5	120
+0	3	3	16		4	120
+0	3	3	17		5	119
+0	3	3	18		4	119
+0	3	3	19		5	118
+0	3	3	20		4	118
+0	3	3	21		5	117
+0	3	3	22		-1	-1
+0	3	3	23		4	117
+0	3	3	24		5	116
+0	3	3	25		4	116
+0	3	3	26		5	115
+0	3	3	27		4	115
+0	3	3	28		5	114
+0	3	3	29		4	114
+0	3	3	30		5	113
+0	3	3	31		4	113
+0	3	3	32		5	112
+0	3	3	33		4	112
+0	3	3	34		5	111
+0	3	3	35		4	111
+0	3	3	36		5	110
+0	3	3	37		4	110
+0	3	3	38		5	109
+0	3	3	39		4	109
+0	3	3	40		5	108
+0	3	3	41		4	108
+0	3	3	42		5	107
+0	3	3	43		4	107
+0	3	3	44		5	106
+0	3	3	45		-1	-1
+0	3	3	46		4	106
+0	3	3	47		5	105
+0	3	3	48		4	105
+0	3	3	49		5	104
+0	3	3	50		4	104
+0	3	3	51		5	103
+0	3	3	52		4	103
+0	3	3	53		5	102
+0	3	3	54		4	102
+0	3	3	55		5	101
+0	3	3	56		-1	-1
+0	3	3	57		4	101
+0	3	3	58		5	100
+0	3	3	59		4	100
+0	3	3	60		5	99
+0	3	3	61		4	99
+0	3	3	62		5	98
+0	3	3	63		4	98
+0	3	3	64		5	97
+0	3	3	65		4	97
+0	3	3	66		5	96
+0	3	3	67		4	96
+1	0	0	0		8	32
+1	0	0	1		9	32
+1	0	0	2		8	33
+1	0	0	3		9	33
+1	0	0	4		8	34
+1	0	0	5		9	34
+1	0	0	6		8	35
+1	0	0	7		9	35
+1	0	0	8		8	36
+1	0	0	9		9	36
+1	0	0	10		8	37
+1	0	0	11		-1	-1
+1	0	0	12		9	37
+1	0	0	13		8	38
+1	0	0	14		9	38
+1	0	0	15		8	39
+1	0	0	16		9	39
+1	0	0	17		8	40
+1	0	0	18		9	40
+1	0	0	19		8	41
+1	0	0	20		9	41
+1	0	0	21		8	42
+1	0	0	22		-1	-1
+1	0	0	23		9	42
+1	0	0	24		8	43
+1	0	0	25		9	43
+1	0	0	26		8	44
+1	0	0	27		9	44
+1	0	0	28		8	45
+1	0	0	29		9	45
+1	0	0	30		8	46
+1	0	0	31		9	46
+1	0	0	32		8	47
+1	0	0	33		9	47
+1	0	0	34		8	48
+1	0	0	35		9	48
+1	0	0	36		8	49
+1	0	0	37		9	49
+1	0	0	38		8	50
+1	0	0	39		9	50
+1	0	0	40		8	51
+1	0	0	41		9	51
+1	0	0	42		8	52
+1	0	0	43		9	52
+1	0	0	44		8	53
+1	0	0	45		-1	-1
+1	0	0	46		9	53
+1	0	0	47		8	54
+1	0	0	48		9	54
+1	0	0	49		8	55
+1	0	0	50		9	55
+1	0	0	51		8	56
+1	0	0	52		9	56
+1	0	0	53		8	57
+1	0	0	54		9	57
+1	0	0	55		8	58
+1	0	0	56		-1	-1
+1	0	0	57		9	58
+1	0	0	58		8	59
+1	0	0	59		9	59
+1	0	0	60		8	60
+1	0	0	61		9	60
+1	0	0	62		8	61
+1	0	0	63		9	61
+1	0	0	64		8	62
+1	0	0	65		9	62
+1	0	0	66		8	63
+1	0	0	67		9	63
+1	0	1	0		8	0
+1	0	1	1		9	0
+1	0	1	2		8	1
+1	0	1	3		9	1
+1	0	1	4		8	2
+1	0	1	5		9	2
+1	0	1	6		8	3
+1	0	1	7		9	3
+1	0	1	8		8	4
+1	0	1	9		9	4
+1	0	1	10		8	5
+1	0	1	11		-1	-1
+1	0	1	12		9	5
+1	0	1	13		8	6
+1	0	1	14		9	6
+1	0	1	15		8	7
+1	0	1	16		9	7
+1	0	1	17		8	8
+1	0	1	18		9	8
+1	0	1	19		8	9
+1	0	1	20		9	9
+1	0	1	21		8	10
+1	0	1	22		-1	-1
+1	0	1	23		9	10
+1	0	1	24		8	11
+1	0	1	25		9	11
+1	0	1	26		8	12
+1	0	1	27		9	12
+1	0	1	28		8	13
+1	0	1	29		9	13
+1	0	1	30		8	14
+1	0	1	31		9	14
+1	0	1	32		8	15
+1	0	1	33		9	15
+1	0	1	34		8	16
+1	0	1	35		9	16
+1	0	1	36		8	17
+1	0	1	37		9	17
+1	0	1	38		8	18
+1	0	1	39		9	18
+1	0	1	40		8	19
+1	0	1	41		9	19
+1	0	1	42		8	20
+1	0	1	43		9	20
+1	0	1	44		8	21
+1	0	1	45		-1	-1
+1	0	1	46		9	21
+1	0	1	47		8	22
+1	0	1	48		9	22
+1	0	1	49		8	23
+1	0	1	50		9	23
+1	0	1	51		8	24
+1	0	1	52		9	24
+1	0	1	53		8	25
+1	0	1	54		9	25
+1	0	1	55		8	26
+1	0	1	56		-1	-1
+1	0	1	57		9	26
+1	0	1	58		8	27
+1	0	1	59		9	27
+1	0	1	60		8	28
+1	0	1	61		9	28
+1	0	1	62		8	29
+1	0	1	63		9	29
+1	0	1	64		8	30
+1	0	1	65		9	30
+1	0	1	66		8	31
+1	0	1	67		9	31
+1	0	2	0		10	32
+1	0	2	1		11	32
+1	0	2	2		10	33
+1	0	2	3		11	33
+1	0	2	4		10	34
+1	0	2	5		11	34
+1	0	2	6		10	35
+1	0	2	7		11	35
+1	0	2	8		10	36
+1	0	2	9		11	36
+1	0	2	10		10	37
+1	0	2	11		-1	-1
+1	0	2	12		11	37
+1	0	2	13		10	38
+1	0	2	14		11	38
+1	0	2	15		10	39
+1	0	2	16		11	39
+1	0	2	17		10	40
+1	0	2	18		11	40
+1	0	2	19		10	41
+1	0	2	20		11	41
+1	0	2	21		10	42
+1	0	2	22		-1	-1
+1	0	2	23		11	42
+1	0	2	24		10	43
+1	0	2	25		11	43
+1	0	2	26		10	44
+1	0	2	27		11	44
+1	0	2	28		10	45
+1	0	2	29		11	45
+1	0	2	30		10	46
+1	0	2	31		11	46
+1	0	2	32		10	47
+1	0	2	33		11	47
+1	0	2	34		10	48
+1	0	2	35		11	48
+1	0	2	36		10	49
+1	0	2	37		11	49
+1	0	2	38		10	50
+1	0	2	39		11	50
+1	0	2	40		10	51
+1	0	2	41		11	51
+1	0	2	42		10	52
+1	0	2	43		11	52
+1	0	2	44		10	53
+1	0	2	45		-1	-1
+1	0	2	46		11	53
+1	0	2	47		10	54
+1	0	2	48		11	54
+1	0	2	49		10	55
+1	0	2	50		11	55
+1	0	2	51		10	56
+1	0	2	52		11	56
+1	0	2	53		10	57
+1	0	2	54		11	57
+1	0	2	55		10	58
+1	0	2	56		-1	-1
+1	0	2	57		11	58
+1	0	2	58		10	59
+1	0	2	59		11	59
+1	0	2	60		10	60
+1	0	2	61		11	60
+1	0	2	62		10	61
+1	0	2	63		11	61
+1	0	2	64		10	62
+1	0	2	65		11	62
+1	0	2	66		10	63
+1	0	2	67		11	63
+1	0	3	0		10	0
+1	0	3	1		11	0
+1	0	3	2		10	1
+1	0	3	3		11	1
+1	0	3	4		10	2
+1	0	3	5		11	2
+1	0	3	6		10	3
+1	0	3	7		11	3
+1	0	3	8		10	4
+1	0	3	9		11	4
+1	0	3	10		10	5
+1	0	3	11		-1	-1
+1	0	3	12		11	5
+1	0	3	13		10	6
+1	0	3	14		11	6
+1	0	3	15		10	7
+1	0	3	16		11	7
+1	0	3	17		10	8
+1	0	3	18		11	8
+1	0	3	19		10	9
+1	0	3	20		11	9
+1	0	3	21		10	10
+1	0	3	22		-1	-1
+1	0	3	23		11	10
+1	0	3	24		10	11
+1	0	3	25		11	11
+1	0	3	26		10	12
+1	0	3	27		11	12
+1	0	3	28		10	13
+1	0	3	29		11	13
+1	0	3	30		10	14
+1	0	3	31		11	14
+1	0	3	32		10	15
+1	0	3	33		11	15
+1	0	3	34		10	16
+1	0	3	35		11	16
+1	0	3	36		10	17
+1	0	3	37		11	17
+1	0	3	38		10	18
+1	0	3	39		11	18
+1	0	3	40		10	19
+1	0	3	41		11	19
+1	0	3	42		10	20
+1	0	3	43		11	20
+1	0	3	44		10	21
+1	0	3	45		-1	-1
+1	0	3	46		11	21
+1	0	3	47		10	22
+1	0	3	48		11	22
+1	0	3	49		10	23
+1	0	3	50		11	23
+1	0	3	51		10	24
+1	0	3	52		11	24
+1	0	3	53		10	25
+1	0	3	54		11	25
+1	0	3	55		10	26
+1	0	3	56		-1	-1
+1	0	3	57		11	26
+1	0	3	58		10	27
+1	0	3	59		11	27
+1	0	3	60		10	28
+1	0	3	61		11	28
+1	0	3	62		10	29
+1	0	3	63		11	29
+1	0	3	64		10	30
+1	0	3	65		11	30
+1	0	3	66		10	31
+1	0	3	67		11	31
+1	1	0	0		11	95
+1	1	0	1		10	95
+1	1	0	2		11	94
+1	1	0	3		10	94
+1	1	0	4		11	93
+1	1	0	5		10	93
+1	1	0	6		11	92
+1	1	0	7		10	92
+1	1	0	8		11	91
+1	1	0	9		10	91
+1	1	0	10		11	90
+1	1	0	11		-1	-1
+1	1	0	12		10	90
+1	1	0	13		11	89
+1	1	0	14		10	89
+1	1	0	15		11	88
+1	1	0	16		10	88
+1	1	0	17		11	87
+1	1	0	18		10	87
+1	1	0	19		11	86
+1	1	0	20		10	86
+1	1	0	21		11	85
+1	1	0	22		-1	-1
+1	1	0	23		10	85
+1	1	0	24		11	84
+1	1	0	25		10	84
+1	1	0	26		11	83
+1	1	0	27		10	83
+1	1	0	28		11	82
+1	1	0	29		10	82
+1	1	0	30		11	81
+1	1	0	31		10	81
+1	1	0	32		11	80
+1	1	0	33		10	80
+1	1	0	34		11	79
+1	1	0	35		10	79
+1	1	0	36		11	78
+1	1	0	37		10	78
+1	1	0	38		11	77
+1	1	0	39		10	77
+1	1	0	40		11	76
+1	1	0	41		10	76
+1	1	0	42		11	75
+1	1	0	43		10	75
+1	1	0	44		11	74
+1	1	0	45		-1	-1
+1	1	0	46		10	74
+1	1	0	47		11	73
+1	1	0	48		10	73
+1	1	0	49		11	72
+1	1	0	50		10	72
+1	1	0	51		11	71
+1	1	0	52		10	71
+1	1	0	53		11	70
+1	1	0	54		10	70
+1	1	0	55		11	69
+1	1	0	56		-1	-1
+1	1	0	57		10	69
+1	1	0	58		11	68
+1	1	0	59		10	68
+1	1	0	60		11	67
+1	1	0	61		10	67
+1	1	0	62		11	66
+1	1	0	63		10	66
+1	1	0	64		11	65
+1	1	0	65		10	65
+1	1	0	66		11	64
+1	1	0	67		10	64
+1	1	1	0		11	127
+1	1	1	1		10	127
+1	1	1	2		11	126
+1	1	1	3		10	126
+1	1	1	4		11	125
+1	1	1	5		10	125
+1	1	1	6		11	124
+1	1	1	7		10	124
+1	1	1	8		11	123
+1	1	1	9		10	123
+1	1	1	10		11	122
+1	1	1	11		-1	-1
+1	1	1	12		10	122
+1	1	1	13		11	121
+1	1	1	14		10	121
+1	1	1	15		11	120
+1	1	1	16		10	120
+1	1	1	17		11	119
+1	1	1	18		10	119
+1	1	1	19		11	118
+1	1	1	20		10	118
+1	1	1	21		11	117
+1	1	1	22		-1	-1
+1	1	1	23		10	117
+1	1	1	24		11	116
+1	1	1	25		10	116
+1	1	1	26		11	115
+1	1	1	27		10	115
+1	1	1	28		11	114
+1	1	1	29		10	114
+1	1	1	30		11	113
+1	1	1	31		10	113
+1	1	1	32		11	112
+1	1	1	33		10	112
+1	1	1	34		11	111
+1	1	1	35		10	111
+1	1	1	36		11	110
+1	1	1	37		10	110
+1	1	1	38		11	109
+1	1	1	39		10	109
+1	1	1	40		11	108
+1	1	1	41		10	108
+1	1	1	42		11	107
+1	1	1	43		10	107
+1	1	1	44		11	106
+1	1	1	45		-1	-1
+1	1	1	46		10	106
+1	1	1	47		11	105
+1	1	1	48		10	105
+1	1	1	49		11	104
+1	1	1	50		10	104
+1	1	1	51		11	103
+1	1	1	52		10	103
+1	1	1	53		11	102
+1	1	1	54		10	102
+1	1	1	55		11	101
+1	1	1	56		-1	-1
+1	1	1	57		10	101
+1	1	1	58		11	100
+1	1	1	59		10	100
+1	1	1	60		11	99
+1	1	1	61		10	99
+1	1	1	62		11	98
+1	1	1	63		10	98
+1	1	1	64		11	97
+1	1	1	65		10	97
+1	1	1	66		11	96
+1	1	1	67		10	96
+1	1	2	0		9	95
+1	1	2	1		8	95
+1	1	2	2		9	94
+1	1	2	3		8	94
+1	1	2	4		9	93
+1	1	2	5		8	93
+1	1	2	6		9	92
+1	1	2	7		8	92
+1	1	2	8		9	91
+1	1	2	9		8	91
+1	1	2	10		9	90
+1	1	2	11		-1	-1
+1	1	2	12		8	90
+1	1	2	13		9	89
+1	1	2	14		8	89
+1	1	2	15		9	88
+1	1	2	16		8	88
+1	1	2	17		9	87
+1	1	2	18		8	87
+1	1	2	19		9	86
+1	1	2	20		8	86
+1	1	2	21		9	85
+1	1	2	22		-1	-1
+1	1	2	23		8	85
+1	1	2	24		9	84
+1	1	2	25		8	84
+1	1	2	26		9	83
+1	1	2	27		8	83
+1	1	2	28		9	82
+1	1	2	29		8	82
+1	1	2	30		9	81
+1	1	2	31		8	81
+1	1	2	32		9	80
+1	1	2	33		8	80
+1	1	2	34		9	79
+1	1	2	35		8	79
+1	1	2	36		9	78
+1	1	2	37		8	78
+1	1	2	38		9	77
+1	1	2	39		8	77
+1	1	2	40		9	76
+1	1	2	41		8	76
+1	1	2	42		9	75
+1	1	2	43		8	75
+1	1	2	44		9	74
+1	1	2	45		-1	-1
+1	1	2	46		8	74
+1	1	2	47		9	73
+1	1	2	48		8	73
+1	1	2	49		9	72
+1	1	2	50		8	72
+1	1	2	51		9	71
+1	1	2	52		8	71
+1	1	2	53		9	70
+1	1	2	54		8	70
+1	1	2	55		9	69
+1	1	2	56		-1	-1
+1	1	2	57		8	69
+1	1	2	58		9	68
+1	1	2	59		8	68
+1	1	2	60		9	67
+1	1	2	61		8	67
+1	1	2	62		9	66
+1	1	2	63		8	66
+1	1	2	64		9	65
+1	1	2	65		8	65
+1	1	2	66		9	64
+1	1	2	67		8	64
+1	1	3	0		9	127
+1	1	3	1		8	127
+1	1	3	2		9	126
+1	1	3	3		8	126
+1	1	3	4		9	125
+1	1	3	5		8	125
+1	1	3	6		9	124
+1	1	3	7		8	124
+1	1	3	8		9	123
+1	1	3	9		8	123
+1	1	3	10		9	122
+1	1	3	11		-1	-1
+1	1	3	12		8	122
+1	1	3	13		9	121
+1	1	3	14		8	121
+1	1	3	15		9	120
+1	1	3	16		8	120
+1	1	3	17		9	119
+1	1	3	18		8	119
+1	1	3	19		9	118
+1	1	3	20		8	118
+1	1	3	21		9	117
+1	1	3	22		-1	-1
+1	1	3	23		8	117
+1	1	3	24		9	116
+1	1	3	25		8	116
+1	1	3	26		9	115
+1	1	3	27		8	115
+1	1	3	28		9	114
+1	1	3	29		8	114
+1	1	3	30		9	113
+1	1	3	31		8	113
+1	1	3	32		9	112
+1	1	3	33		8	112
+1	1	3	34		9	111
+1	1	3	35		8	111
+1	1	3	36		9	110
+1	1	3	37		8	110
+1	1	3	38		9	109
+1	1	3	39		8	109
+1	1	3	40		9	108
+1	1	3	41		8	108
+1	1	3	42		9	107
+1	1	3	43		8	107
+1	1	3	44		9	106
+1	1	3	45		-1	-1
+1	1	3	46		8	106
+1	1	3	47		9	105
+1	1	3	48		8	105
+1	1	3	49		9	104
+1	1	3	50		8	104
+1	1	3	51		9	103
+1	1	3	52		8	103
+1	1	3	53		9	102
+1	1	3	54		8	102
+1	1	3	55		9	101
+1	1	3	56		-1	-1
+1	1	3	57		8	101
+1	1	3	58		9	100
+1	1	3	59		8	100
+1	1	3	60		9	99
+1	1	3	61		8	99
+1	1	3	62		9	98
+1	1	3	63		8	98
+1	1	3	64		9	97
+1	1	3	65		8	97
+1	1	3	66		9	96
+1	1	3	67		8	96
+1	2	0	0		12	32
+1	2	0	1		13	32
+1	2	0	2		12	33
+1	2	0	3		13	33
+1	2	0	4		12	34
+1	2	0	5		13	34
+1	2	0	6		12	35
+1	2	0	7		13	35
+1	2	0	8		12	36
+1	2	0	9		13	36
+1	2	0	10		12	37
+1	2	0	11		-1	-1
+1	2	0	12		13	37
+1	2	0	13		12	38
+1	2	0	14		13	38
+1	2	0	15		12	39
+1	2	0	16		13	39
+1	2	0	17		12	40
+1	2	0	18		13	40
+1	2	0	19		12	41
+1	2	0	20		13	41
+1	2	0	21		12	42
+1	2	0	22		-1	-1
+1	2	0	23		13	42
+1	2	0	24		12	43
+1	2	0	25		13	43
+1	2	0	26		12	44
+1	2	0	27		13	44
+1	2	0	28		12	45
+1	2	0	29		13	45
+1	2	0	30		12	46
+1	2	0	31		13	46
+1	2	0	32		12	47
+1	2	0	33		13	47
+1	2	0	34		12	48
+1	2	0	35		13	48
+1	2	0	36		12	49
+1	2	0	37		13	49
+1	2	0	38		12	50
+1	2	0	39		13	50
+1	2	0	40		12	51
+1	2	0	41		13	51
+1	2	0	42		12	52
+1	2	0	43		13	52
+1	2	0	44		12	53
+1	2	0	45		-1	-1
+1	2	0	46		13	53
+1	2	0	47		12	54
+1	2	0	48		13	54
+1	2	0	49		12	55
+1	2	0	50		13	55
+1	2	0	51		12	56
+1	2	0	52		13	56
+1	2	0	53		12	57
+1	2	0	54		13	57
+1	2	0	55		12	58
+1	2	0	56		-1	-1
+1	2	0	57		13	58
+1	2	0	58		12	59
+1	2	0	59		13	59
+1	2	0	60		12	60
+1	2	0	61		13	60
+1	2	0	62		12	61
+1	2	0	63		13	61
+1	2	0	64		12	62
+1	2	0	65		13	62
+1	2	0	66		12	63
+1	2	0	67		13	63
+1	2	1	0		12	0
+1	2	1	1		13	0
+1	2	1	2		12	1
+1	2	1	3		13	1
+1	2	1	4		12	2
+1	2	1	5		13	2
+1	2	1	6		12	3
+1	2	1	7		13	3
+1	2	1	8		12	4
+1	2	1	9		13	4
+1	2	1	10		12	5
+1	2	1	11		-1	-1
+1	2	1	12		13	5
+1	2	1	13		12	6
+1	2	1	14		13	6
+1	2	1	15		12	7
+1	2	1	16		13	7
+1	2	1	17		12	8
+1	2	1	18		13	8
+1	2	1	19		12	9
+1	2	1	20		13	9
+1	2	1	21		12	10
+1	2	1	22		-1	-1
+1	2	1	23		13	10
+1	2	1	24		12	11
+1	2	1	25		13	11
+1	2	1	26		12	12
+1	2	1	27		13	12
+1	2	1	28		12	13
+1	2	1	29		13	13
+1	2	1	30		12	14
+1	2	1	31		13	14
+1	2	1	32		12	15
+1	2	1	33		13	15
+1	2	1	34		12	16
+1	2	1	35		13	16
+1	2	1	36		12	17
+1	2	1	37		13	17
+1	2	1	38		12	18
+1	2	1	39		13	18
+1	2	1	40		12	19
+1	2	1	41		13	19
+1	2	1	42		12	20
+1	2	1	43		13	20
+1	2	1	44		12	21
+1	2	1	45		-1	-1
+1	2	1	46		13	21
+1	2	1	47		12	22
+1	2	1	48		13	22
+1	2	1	49		12	23
+1	2	1	50		13	23
+1	2	1	51		12	24
+1	2	1	52		13	24
+1	2	1	53		12	25
+1	2	1	54		13	25
+1	2	1	55		12	26
+1	2	1	56		-1	-1
+1	2	1	57		13	26
+1	2	1	58		12	27
+1	2	1	59		13	27
+1	2	1	60		12	28
+1	2	1	61		13	28
+1	2	1	62		12	29
+1	2	1	63		13	29
+1	2	1	64		12	30
+1	2	1	65		13	30
+1	2	1	66		12	31
+1	2	1	67		13	31
+1	2	2	0		14	32
+1	2	2	1		15	32
+1	2	2	2		14	33
+1	2	2	3		15	33
+1	2	2	4		14	34
+1	2	2	5		15	34
+1	2	2	6		14	35
+1	2	2	7		15	35
+1	2	2	8		14	36
+1	2	2	9		15	36
+1	2	2	10		14	37
+1	2	2	11		-1	-1
+1	2	2	12		15	37
+1	2	2	13		14	38
+1	2	2	14		15	38
+1	2	2	15		14	39
+1	2	2	16		15	39
+1	2	2	17		14	40
+1	2	2	18		15	40
+1	2	2	19		14	41
+1	2	2	20		15	41
+1	2	2	21		14	42
+1	2	2	22		-1	-1
+1	2	2	23		15	42
+1	2	2	24		14	43
+1	2	2	25		15	43
+1	2	2	26		14	44
+1	2	2	27		15	44
+1	2	2	28		14	45
+1	2	2	29		15	45
+1	2	2	30		14	46
+1	2	2	31		15	46
+1	2	2	32		14	47
+1	2	2	33		15	47
+1	2	2	34		14	48
+1	2	2	35		15	48
+1	2	2	36		14	49
+1	2	2	37		15	49
+1	2	2	38		14	50
+1	2	2	39		15	50
+1	2	2	40		14	51
+1	2	2	41		15	51
+1	2	2	42		14	52
+1	2	2	43		15	52
+1	2	2	44		14	53
+1	2	2	45		-1	-1
+1	2	2	46		15	53
+1	2	2	47		14	54
+1	2	2	48		15	54
+1	2	2	49		14	55
+1	2	2	50		15	55
+1	2	2	51		14	56
+1	2	2	52		15	56
+1	2	2	53		14	57
+1	2	2	54		15	57
+1	2	2	55		14	58
+1	2	2	56		-1	-1
+1	2	2	57		15	58
+1	2	2	58		14	59
+1	2	2	59		15	59
+1	2	2	60		14	60
+1	2	2	61		15	60
+1	2	2	62		14	61
+1	2	2	63		15	61
+1	2	2	64		14	62
+1	2	2	65		15	62
+1	2	2	66		14	63
+1	2	2	67		15	63
+1	2	3	0		14	0
+1	2	3	1		15	0
+1	2	3	2		14	1
+1	2	3	3		15	1
+1	2	3	4		14	2
+1	2	3	5		15	2
+1	2	3	6		14	3
+1	2	3	7		15	3
+1	2	3	8		14	4
+1	2	3	9		15	4
+1	2	3	10		14	5
+1	2	3	11		-1	-1
+1	2	3	12		15	5
+1	2	3	13		14	6
+1	2	3	14		15	6
+1	2	3	15		14	7
+1	2	3	16		15	7
+1	2	3	17		14	8
+1	2	3	18		15	8
+1	2	3	19		14	9
+1	2	3	20		15	9
+1	2	3	21		14	10
+1	2	3	22		-1	-1
+1	2	3	23		15	10
+1	2	3	24		14	11
+1	2	3	25		15	11
+1	2	3	26		14	12
+1	2	3	27		15	12
+1	2	3	28		14	13
+1	2	3	29		15	13
+1	2	3	30		14	14
+1	2	3	31		15	14
+1	2	3	32		14	15
+1	2	3	33		15	15
+1	2	3	34		14	16
+1	2	3	35		15	16
+1	2	3	36		14	17
+1	2	3	37		15	17
+1	2	3	38		14	18
+1	2	3	39		15	18
+1	2	3	40		14	19
+1	2	3	41		15	19
+1	2	3	42		14	20
+1	2	3	43		15	20
+1	2	3	44		14	21
+1	2	3	45		-1	-1
+1	2	3	46		15	21
+1	2	3	47		14	22
+1	2	3	48		15	22
+1	2	3	49		14	23
+1	2	3	50		15	23
+1	2	3	51		14	24
+1	2	3	52		15	24
+1	2	3	53		14	25
+1	2	3	54		15	25
+1	2	3	55		14	26
+1	2	3	56		-1	-1
+1	2	3	57		15	26
+1	2	3	58		14	27
+1	2	3	59		15	27
+1	2	3	60		14	28
+1	2	3	61		15	28
+1	2	3	62		14	29
+1	2	3	63		15	29
+1	2	3	64		14	30
+1	2	3	65		15	30
+1	2	3	66		14	31
+1	2	3	67		15	31
+1	3	0	0		15	95
+1	3	0	1		14	95
+1	3	0	2		15	94
+1	3	0	3		14	94
+1	3	0	4		15	93
+1	3	0	5		14	93
+1	3	0	6		15	92
+1	3	0	7		14	92
+1	3	0	8		15	91
+1	3	0	9		14	91
+1	3	0	10		15	90
+1	3	0	11		-1	-1
+1	3	0	12		14	90
+1	3	0	13		15	89
+1	3	0	14		14	89
+1	3	0	15		15	88
+1	3	0	16		14	88
+1	3	0	17		15	87
+1	3	0	18		14	87
+1	3	0	19		15	86
+1	3	0	20		14	86
+1	3	0	21		15	85
+1	3	0	22		-1	-1
+1	3	0	23		14	85
+1	3	0	24		15	84
+1	3	0	25		14	84
+1	3	0	26		15	83
+1	3	0	27		14	83
+1	3	0	28		15	82
+1	3	0	29		14	82
+1	3	0	30		15	81
+1	3	0	31		14	81
+1	3	0	32		15	80
+1	3	0	33		14	80
+1	3	0	34		15	79
+1	3	0	35		14	79
+1	3	0	36		15	78
+1	3	0	37		14	78
+1	3	0	38		15	77
+1	3	0	39		14	77
+1	3	0	40		15	76
+1	3	0	41		14	76
+1	3	0	42		15	75
+1	3	0	43		14	75
+1	3	0	44		15	74
+1	3	0	45		-1	-1
+1	3	0	46		14	74
+1	3	0	47		15	73
+1	3	0	48		14	73
+1	3	0	49		15	72
+1	3	0	50		14	72
+1	3	0	51		15	71
+1	3	0	52		14	71
+1	3	0	53		15	70
+1	3	0	54		14	70
+1	3	0	55		15	69
+1	3	0	56		-1	-1
+1	3	0	57		14	69
+1	3	0	58		15	68
+1	3	0	59		14	68
+1	3	0	60		15	67
+1	3	0	61		14	67
+1	3	0	62		15	66
+1	3	0	63		14	66
+1	3	0	64		15	65
+1	3	0	65		14	65
+1	3	0	66		15	64
+1	3	0	67		14	64
+1	3	1	0		15	127
+1	3	1	1		14	127
+1	3	1	2		15	126
+1	3	1	3		14	126
+1	3	1	4		15	125
+1	3	1	5		14	125
+1	3	1	6		15	124
+1	3	1	7		14	124
+1	3	1	8		15	123
+1	3	1	9		14	123
+1	3	1	10		15	122
+1	3	1	11		-1	-1
+1	3	1	12		14	122
+1	3	1	13		15	121
+1	3	1	14		14	121
+1	3	1	15		15	120
+1	3	1	16		14	120
+1	3	1	17		15	119
+1	3	1	18		14	119
+1	3	1	19		15	118
+1	3	1	20		14	118
+1	3	1	21		15	117
+1	3	1	22		-1	-1
+1	3	1	23		14	117
+1	3	1	24		15	116
+1	3	1	25		14	116
+1	3	1	26		15	115
+1	3	1	27		14	115
+1	3	1	28		15	114
+1	3	1	29		14	114
+1	3	1	30		15	113
+1	3	1	31		14	113
+1	3	1	32		15	112
+1	3	1	33		14	112
+1	3	1	34		15	111
+1	3	1	35		14	111
+1	3	1	36		15	110
+1	3	1	37		14	110
+1	3	1	38		15	109
+1	3	1	39		14	109
+1	3	1	40		15	108
+1	3	1	41		14	108
+1	3	1	42		15	107
+1	3	1	43		14	107
+1	3	1	44		15	106
+1	3	1	45		-1	-1
+1	3	1	46		14	106
+1	3	1	47		15	105
+1	3	1	48		14	105
+1	3	1	49		15	104
+1	3	1	50		14	104
+1	3	1	51		15	103
+1	3	1	52		14	103
+1	3	1	53		15	102
+1	3	1	54		14	102
+1	3	1	55		15	101
+1	3	1	56		-1	-1
+1	3	1	57		14	101
+1	3	1	58		15	100
+1	3	1	59		14	100
+1	3	1	60		15	99
+1	3	1	61		14	99
+1	3	1	62		15	98
+1	3	1	63		14	98
+1	3	1	64		15	97
+1	3	1	65		14	97
+1	3	1	66		15	96
+1	3	1	67		14	96
+1	3	2	0		13	95
+1	3	2	1		12	95
+1	3	2	2		13	94
+1	3	2	3		12	94
+1	3	2	4		13	93
+1	3	2	5		12	93
+1	3	2	6		13	92
+1	3	2	7		12	92
+1	3	2	8		13	91
+1	3	2	9		12	91
+1	3	2	10		13	90
+1	3	2	11		-1	-1
+1	3	2	12		12	90
+1	3	2	13		13	89
+1	3	2	14		12	89
+1	3	2	15		13	88
+1	3	2	16		12	88
+1	3	2	17		13	87
+1	3	2	18		12	87
+1	3	2	19		13	86
+1	3	2	20		12	86
+1	3	2	21		13	85
+1	3	2	22		-1	-1
+1	3	2	23		12	85
+1	3	2	24		13	84
+1	3	2	25		12	84
+1	3	2	26		13	83
+1	3	2	27		12	83
+1	3	2	28		13	82
+1	3	2	29		12	82
+1	3	2	30		13	81
+1	3	2	31		12	81
+1	3	2	32		13	80
+1	3	2	33		12	80
+1	3	2	34		13	79
+1	3	2	35		12	79
+1	3	2	36		13	78
+1	3	2	37		12	78
+1	3	2	38		13	77
+1	3	2	39		12	77
+1	3	2	40		13	76
+1	3	2	41		12	76
+1	3	2	42		13	75
+1	3	2	43		12	75
+1	3	2	44		13	74
+1	3	2	45		-1	-1
+1	3	2	46		12	74
+1	3	2	47		13	73
+1	3	2	48		12	73
+1	3	2	49		13	72
+1	3	2	50		12	72
+1	3	2	51		13	71
+1	3	2	52		12	71
+1	3	2	53		13	70
+1	3	2	54		12	70
+1	3	2	55		13	69
+1	3	2	56		-1	-1
+1	3	2	57		12	69
+1	3	2	58		13	68
+1	3	2	59		12	68
+1	3	2	60		13	67
+1	3	2	61		12	67
+1	3	2	62		13	66
+1	3	2	63		12	66
+1	3	2	64		13	65
+1	3	2	65		12	65
+1	3	2	66		13	64
+1	3	2	67		12	64
+1	3	3	0		13	127
+1	3	3	1		12	127
+1	3	3	2		13	126
+1	3	3	3		12	126
+1	3	3	4		13	125
+1	3	3	5		12	125
+1	3	3	6		13	124
+1	3	3	7		12	124
+1	3	3	8		13	123
+1	3	3	9		12	123
+1	3	3	10		13	122
+1	3	3	11		-1	-1
+1	3	3	12		12	122
+1	3	3	13		13	121
+1	3	3	14		12	121
+1	3	3	15		13	120
+1	3	3	16		12	120
+1	3	3	17		13	119
+1	3	3	18		12	119
+1	3	3	19		13	118
+1	3	3	20		12	118
+1	3	3	21		13	117
+1	3	3	22		-1	-1
+1	3	3	23		12	117
+1	3	3	24		13	116
+1	3	3	25		12	116
+1	3	3	26		13	115
+1	3	3	27		12	115
+1	3	3	28		13	114
+1	3	3	29		12	114
+1	3	3	30		13	113
+1	3	3	31		12	113
+1	3	3	32		13	112
+1	3	3	33		12	112
+1	3	3	34		13	111
+1	3	3	35		12	111
+1	3	3	36		13	110
+1	3	3	37		12	110
+1	3	3	38		13	109
+1	3	3	39		12	109
+1	3	3	40		13	108
+1	3	3	41		12	108
+1	3	3	42		13	107
+1	3	3	43		12	107
+1	3	3	44		13	106
+1	3	3	45		-1	-1
+1	3	3	46		12	106
+1	3	3	47		13	105
+1	3	3	48		12	105
+1	3	3	49		13	104
+1	3	3	50		12	104
+1	3	3	51		13	103
+1	3	3	52		12	103
+1	3	3	53		13	102
+1	3	3	54		12	102
+1	3	3	55		13	101
+1	3	3	56		-1	-1
+1	3	3	57		12	101
+1	3	3	58		13	100
+1	3	3	59		12	100
+1	3	3	60		13	99
+1	3	3	61		12	99
+1	3	3	62		13	98
+1	3	3	63		12	98
+1	3	3	64		13	97
+1	3	3	65		12	97
+1	3	3	66		13	96
+1	3	3	67		12	96
+2	0	0	0		16	32
+2	0	0	1		17	32
+2	0	0	2		16	33
+2	0	0	3		17	33
+2	0	0	4		16	34
+2	0	0	5		17	34
+2	0	0	6		16	35
+2	0	0	7		17	35
+2	0	0	8		16	36
+2	0	0	9		17	36
+2	0	0	10		16	37
+2	0	0	11		-1	-1
+2	0	0	12		17	37
+2	0	0	13		16	38
+2	0	0	14		17	38
+2	0	0	15		16	39
+2	0	0	16		17	39
+2	0	0	17		16	40
+2	0	0	18		17	40
+2	0	0	19		16	41
+2	0	0	20		17	41
+2	0	0	21		16	42
+2	0	0	22		-1	-1
+2	0	0	23		17	42
+2	0	0	24		16	43
+2	0	0	25		17	43
+2	0	0	26		16	44
+2	0	0	27		17	44
+2	0	0	28		16	45
+2	0	0	29		17	45
+2	0	0	30		16	46
+2	0	0	31		17	46
+2	0	0	32		16	47
+2	0	0	33		17	47
+2	0	0	34		16	48
+2	0	0	35		17	48
+2	0	0	36		16	49
+2	0	0	37		17	49
+2	0	0	38		16	50
+2	0	0	39		17	50
+2	0	0	40		16	51
+2	0	0	41		17	51
+2	0	0	42		16	52
+2	0	0	43		17	52
+2	0	0	44		16	53
+2	0	0	45		-1	-1
+2	0	0	46		17	53
+2	0	0	47		16	54
+2	0	0	48		17	54
+2	0	0	49		16	55
+2	0	0	50		17	55
+2	0	0	51		16	56
+2	0	0	52		17	56
+2	0	0	53		16	57
+2	0	0	54		17	57
+2	0	0	55		16	58
+2	0	0	56		-1	-1
+2	0	0	57		17	58
+2	0	0	58		16	59
+2	0	0	59		17	59
+2	0	0	60		16	60
+2	0	0	61		17	60
+2	0	0	62		16	61
+2	0	0	63		17	61
+2	0	0	64		16	62
+2	0	0	65		17	62
+2	0	0	66		16	63
+2	0	0	67		17	63
+2	0	1	0		16	0
+2	0	1	1		17	0
+2	0	1	2		16	1
+2	0	1	3		17	1
+2	0	1	4		16	2
+2	0	1	5		17	2
+2	0	1	6		16	3
+2	0	1	7		17	3
+2	0	1	8		16	4
+2	0	1	9		17	4
+2	0	1	10		16	5
+2	0	1	11		-1	-1
+2	0	1	12		17	5
+2	0	1	13		16	6
+2	0	1	14		17	6
+2	0	1	15		16	7
+2	0	1	16		17	7
+2	0	1	17		16	8
+2	0	1	18		17	8
+2	0	1	19		16	9
+2	0	1	20		17	9
+2	0	1	21		16	10
+2	0	1	22		-1	-1
+2	0	1	23		17	10
+2	0	1	24		16	11
+2	0	1	25		17	11
+2	0	1	26		16	12
+2	0	1	27		17	12
+2	0	1	28		16	13
+2	0	1	29		17	13
+2	0	1	30		16	14
+2	0	1	31		17	14
+2	0	1	32		16	15
+2	0	1	33		17	15
+2	0	1	34		16	16
+2	0	1	35		17	16
+2	0	1	36		16	17
+2	0	1	37		17	17
+2	0	1	38		16	18
+2	0	1	39		17	18
+2	0	1	40		16	19
+2	0	1	41		17	19
+2	0	1	42		16	20
+2	0	1	43		17	20
+2	0	1	44		16	21
+2	0	1	45		-1	-1
+2	0	1	46		17	21
+2	0	1	47		16	22
+2	0	1	48		17	22
+2	0	1	49		16	23
+2	0	1	50		17	23
+2	0	1	51		16	24
+2	0	1	52		17	24
+2	0	1	53		16	25
+2	0	1	54		17	25
+2	0	1	55		16	26
+2	0	1	56		-1	-1
+2	0	1	57		17	26
+2	0	1	58		16	27
+2	0	1	59		17	27
+2	0	1	60		16	28
+2	0	1	61		17	28
+2	0	1	62		16	29
+2	0	1	63		17	29
+2	0	1	64		16	30
+2	0	1	65		17	30
+2	0	1	66		16	31
+2	0	1	67		17	31
+2	0	2	0		18	32
+2	0	2	1		19	32
+2	0	2	2		18	33
+2	0	2	3		19	33
+2	0	2	4		18	34
+2	0	2	5		19	34
+2	0	2	6		18	35
+2	0	2	7		19	35
+2	0	2	8		18	36
+2	0	2	9		19	36
+2	0	2	10		18	37
+2	0	2	11		-1	-1
+2	0	2	12		19	37
+2	0	2	13		18	38
+2	0	2	14		19	38
+2	0	2	15		18	39
+2	0	2	16		19	39
+2	0	2	17		18	40
+2	0	2	18		19	40
+2	0	2	19		18	41
+2	0	2	20		19	41
+2	0	2	21		18	42
+2	0	2	22		-1	-1
+2	0	2	23		19	42
+2	0	2	24		18	43
+2	0	2	25		19	43
+2	0	2	26		18	44
+2	0	2	27		19	44
+2	0	2	28		18	45
+2	0	2	29		19	45
+2	0	2	30		18	46
+2	0	2	31		19	46
+2	0	2	32		18	47
+2	0	2	33		19	47
+2	0	2	34		18	48
+2	0	2	35		19	48
+2	0	2	36		18	49
+2	0	2	37		19	49
+2	0	2	38		18	50
+2	0	2	39		19	50
+2	0	2	40		18	51
+2	0	2	41		19	51
+2	0	2	42		18	52
+2	0	2	43		19	52
+2	0	2	44		18	53
+2	0	2	45		-1	-1
+2	0	2	46		19	53
+2	0	2	47		18	54
+2	0	2	48		19	54
+2	0	2	49		18	55
+2	0	2	50		19	55
+2	0	2	51		18	56
+2	0	2	52		19	56
+2	0	2	53		18	57
+2	0	2	54		19	57
+2	0	2	55		18	58
+2	0	2	56		-1	-1
+2	0	2	57		19	58
+2	0	2	58		18	59
+2	0	2	59		19	59
+2	0	2	60		18	60
+2	0	2	61		19	60
+2	0	2	62		18	61
+2	0	2	63		19	61
+2	0	2	64		18	62
+2	0	2	65		19	62
+2	0	2	66		18	63
+2	0	2	67		19	63
+2	0	3	0		18	0
+2	0	3	1		19	0
+2	0	3	2		18	1
+2	0	3	3		19	1
+2	0	3	4		18	2
+2	0	3	5		19	2
+2	0	3	6		18	3
+2	0	3	7		19	3
+2	0	3	8		18	4
+2	0	3	9		19	4
+2	0	3	10		18	5
+2	0	3	11		-1	-1
+2	0	3	12		19	5
+2	0	3	13		18	6
+2	0	3	14		19	6
+2	0	3	15		18	7
+2	0	3	16		19	7
+2	0	3	17		18	8
+2	0	3	18		19	8
+2	0	3	19		18	9
+2	0	3	20		19	9
+2	0	3	21		18	10
+2	0	3	22		-1	-1
+2	0	3	23		19	10
+2	0	3	24		18	11
+2	0	3	25		19	11
+2	0	3	26		18	12
+2	0	3	27		19	12
+2	0	3	28		18	13
+2	0	3	29		19	13
+2	0	3	30		18	14
+2	0	3	31		19	14
+2	0	3	32		18	15
+2	0	3	33		19	15
+2	0	3	34		18	16
+2	0	3	35		19	16
+2	0	3	36		18	17
+2	0	3	37		19	17
+2	0	3	38		18	18
+2	0	3	39		19	18
+2	0	3	40		18	19
+2	0	3	41		19	19
+2	0	3	42		18	20
+2	0	3	43		19	20
+2	0	3	44		18	21
+2	0	3	45		-1	-1
+2	0	3	46		19	21
+2	0	3	47		18	22
+2	0	3	48		19	22
+2	0	3	49		18	23
+2	0	3	50		19	23
+2	0	3	51		18	24
+2	0	3	52		19	24
+2	0	3	53		18	25
+2	0	3	54		19	25
+2	0	3	55		18	26
+2	0	3	56		-1	-1
+2	0	3	57		19	26
+2	0	3	58		18	27
+2	0	3	59		19	27
+2	0	3	60		18	28
+2	0	3	61		19	28
+2	0	3	62		18	29
+2	0	3	63		19	29
+2	0	3	64		18	30
+2	0	3	65		19	30
+2	0	3	66		18	31
+2	0	3	67		19	31
+2	1	0	0		19	95
+2	1	0	1		18	95
+2	1	0	2		19	94
+2	1	0	3		18	94
+2	1	0	4		19	93
+2	1	0	5		18	93
+2	1	0	6		19	92
+2	1	0	7		18	92
+2	1	0	8		19	91
+2	1	0	9		18	91
+2	1	0	10		19	90
+2	1	0	11		-1	-1
+2	1	0	12		18	90
+2	1	0	13		19	89
+2	1	0	14		18	89
+2	1	0	15		19	88
+2	1	0	16		18	88
+2	1	0	17		19	87
+2	1	0	18		18	87
+2	1	0	19		19	86
+2	1	0	20		18	86
+2	1	0	21		19	85
+2	1	0	22		-1	-1
+2	1	0	23		18	85
+2	1	0	24		19	84
+2	1	0	25		18	84
+2	1	0	26		19	83
+2	1	0	27		18	83
+2	1	0	28		19	82
+2	1	0	29		18	82
+2	1	0	30		19	81
+2	1	0	31		18	81
+2	1	0	32		19	80
+2	1	0	33		18	80
+2	1	0	34		19	79
+2	1	0	35		18	79
+2	1	0	36		19	78
+2	1	0	37		18	78
+2	1	0	38		19	77
+2	1	0	39		18	77
+2	1	0	40		19	76
+2	1	0	41		18	76
+2	1	0	42		19	75
+2	1	0	43		18	75
+2	1	0	44		19	74
+2	1	0	45		-1	-1
+2	1	0	46		18	74
+2	1	0	47		19	73
+2	1	0	48		18	73
+2	1	0	49		19	72
+2	1	0	50		18	72
+2	1	0	51		19	71
+2	1	0	52		18	71
+2	1	0	53		19	70
+2	1	0	54		18	70
+2	1	0	55		19	69
+2	1	0	56		-1	-1
+2	1	0	57		18	69
+2	1	0	58		19	68
+2	1	0	59		18	68
+2	1	0	60		19	67
+2	1	0	61		18	67
+2	1	0	62		19	66
+2	1	0	63		18	66
+2	1	0	64		19	65
+2	1	0	65		18	65
+2	1	0	66		19	64
+2	1	0	67		18	64
+2	1	1	0		19	127
+2	1	1	1		18	127
+2	1	1	2		19	126
+2	1	1	3		18	126
+2	1	1	4		19	125
+2	1	1	5		18	125
+2	1	1	6		19	124
+2	1	1	7		18	124
+2	1	1	8		19	123
+2	1	1	9		18	123
+2	1	1	10		19	122
+2	1	1	11		-1	-1
+2	1	1	12		18	122
+2	1	1	13		19	121
+2	1	1	14		18	121
+2	1	1	15		19	120
+2	1	1	16		18	120
+2	1	1	17		19	119
+2	1	1	18		18	119
+2	1	1	19		19	118
+2	1	1	20		18	118
+2	1	1	21		19	117
+2	1	1	22		-1	-1
+2	1	1	23		18	117
+2	1	1	24		19	116
+2	1	1	25		18	116
+2	1	1	26		19	115
+2	1	1	27		18	115
+2	1	1	28		19	114
+2	1	1	29		18	114
+2	1	1	30		19	113
+2	1	1	31		18	113
+2	1	1	32		19	112
+2	1	1	33		18	112
+2	1	1	34		19	111
+2	1	1	35		18	111
+2	1	1	36		19	110
+2	1	1	37		18	110
+2	1	1	38		19	109
+2	1	1	39		18	109
+2	1	1	40		19	108
+2	1	1	41		18	108
+2	1	1	42		19	107
+2	1	1	43		18	107
+2	1	1	44		19	106
+2	1	1	45		-1	-1
+2	1	1	46		18	106
+2	1	1	47		19	105
+2	1	1	48		18	105
+2	1	1	49		19	104
+2	1	1	50		18	104
+2	1	1	51		19	103
+2	1	1	52		18	103
+2	1	1	53		19	102
+2	1	1	54		18	102
+2	1	1	55		19	101
+2	1	1	56		-1	-1
+2	1	1	57		18	101
+2	1	1	58		19	100
+2	1	1	59		18	100
+2	1	1	60		19	99
+2	1	1	61		18	99
+2	1	1	62		19	98
+2	1	1	63		18	98
+2	1	1	64		19	97
+2	1	1	65		18	97
+2	1	1	66		19	96
+2	1	1	67		18	96
+2	1	2	0		17	95
+2	1	2	1		16	95
+2	1	2	2		17	94
+2	1	2	3		16	94
+2	1	2	4		17	93
+2	1	2	5		16	93
+2	1	2	6		17	92
+2	1	2	7		16	92
+2	1	2	8		17	91
+2	1	2	9		16	91
+2	1	2	10		17	90
+2	1	2	11		-1	-1
+2	1	2	12		16	90
+2	1	2	13		17	89
+2	1	2	14		16	89
+2	1	2	15		17	88
+2	1	2	16		16	88
+2	1	2	17		17	87
+2	1	2	18		16	87
+2	1	2	19		17	86
+2	1	2	20		16	86
+2	1	2	21		17	85
+2	1	2	22		-1	-1
+2	1	2	23		16	85
+2	1	2	24		17	84
+2	1	2	25		16	84
+2	1	2	26		17	83
+2	1	2	27		16	83
+2	1	2	28		17	82
+2	1	2	29		16	82
+2	1	2	30		17	81
+2	1	2	31		16	81
+2	1	2	32		17	80
+2	1	2	33		16	80
+2	1	2	34		17	79
+2	1	2	35		16	79
+2	1	2	36		17	78
+2	1	2	37		16	78
+2	1	2	38		17	77
+2	1	2	39		16	77
+2	1	2	40		17	76
+2	1	2	41		16	76
+2	1	2	42		17	75
+2	1	2	43		16	75
+2	1	2	44		17	74
+2	1	2	45		-1	-1
+2	1	2	46		16	74
+2	1	2	47		17	73
+2	1	2	48		16	73
+2	1	2	49		17	72
+2	1	2	50		16	72
+2	1	2	51		17	71
+2	1	2	52		16	71
+2	1	2	53		17	70
+2	1	2	54		16	70
+2	1	2	55		17	69
+2	1	2	56		-1	-1
+2	1	2	57		16	69
+2	1	2	58		17	68
+2	1	2	59		16	68
+2	1	2	60		17	67
+2	1	2	61		16	67
+2	1	2	62		17	66
+2	1	2	63		16	66
+2	1	2	64		17	65
+2	1	2	65		16	65
+2	1	2	66		17	64
+2	1	2	67		16	64
+2	1	3	0		17	127
+2	1	3	1		16	127
+2	1	3	2		17	126
+2	1	3	3		16	126
+2	1	3	4		17	125
+2	1	3	5		16	125
+2	1	3	6		17	124
+2	1	3	7		16	124
+2	1	3	8		17	123
+2	1	3	9		16	123
+2	1	3	10		17	122
+2	1	3	11		-1	-1
+2	1	3	12		16	122
+2	1	3	13		17	121
+2	1	3	14		16	121
+2	1	3	15		17	120
+2	1	3	16		16	120
+2	1	3	17		17	119
+2	1	3	18		16	119
+2	1	3	19		17	118
+2	1	3	20		16	118
+2	1	3	21		17	117
+2	1	3	22		-1	-1
+2	1	3	23		16	117
+2	1	3	24		17	116
+2	1	3	25		16	116
+2	1	3	26		17	115
+2	1	3	27		16	115
+2	1	3	28		17	114
+2	1	3	29		16	114
+2	1	3	30		17	113
+2	1	3	31		16	113
+2	1	3	32		17	112
+2	1	3	33		16	112
+2	1	3	34		17	111
+2	1	3	35		16	111
+2	1	3	36		17	110
+2	1	3	37		16	110
+2	1	3	38		17	109
+2	1	3	39		16	109
+2	1	3	40		17	108
+2	1	3	41		16	108
+2	1	3	42		17	107
+2	1	3	43		16	107
+2	1	3	44		17	106
+2	1	3	45		-1	-1
+2	1	3	46		16	106
+2	1	3	47		17	105
+2	1	3	48		16	105
+2	1	3	49		17	104
+2	1	3	50		16	104
+2	1	3	51		17	103
+2	1	3	52		16	103
+2	1	3	53		17	102
+2	1	3	54		16	102
+2	1	3	55		17	101
+2	1	3	56		-1	-1
+2	1	3	57		16	101
+2	1	3	58		17	100
+2	1	3	59		16	100
+2	1	3	60		17	99
+2	1	3	61		16	99
+2	1	3	62		17	98
+2	1	3	63		16	98
+2	1	3	64		17	97
+2	1	3	65		16	97
+2	1	3	66		17	96
+2	1	3	67		16	96
+2	2	0	0		20	32
+2	2	0	1		21	32
+2	2	0	2		20	33
+2	2	0	3		21	33
+2	2	0	4		20	34
+2	2	0	5		21	34
+2	2	0	6		20	35
+2	2	0	7		21	35
+2	2	0	8		20	36
+2	2	0	9		21	36
+2	2	0	10		20	37
+2	2	0	11		-1	-1
+2	2	0	12		21	37
+2	2	0	13		20	38
+2	2	0	14		21	38
+2	2	0	15		20	39
+2	2	0	16		21	39
+2	2	0	17		20	40
+2	2	0	18		21	40
+2	2	0	19		20	41
+2	2	0	20		21	41
+2	2	0	21		20	42
+2	2	0	22		-1	-1
+2	2	0	23		21	42
+2	2	0	24		20	43
+2	2	0	25		21	43
+2	2	0	26		20	44
+2	2	0	27		21	44
+2	2	0	28		20	45
+2	2	0	29		21	45
+2	2	0	30		20	46
+2	2	0	31		21	46
+2	2	0	32		20	47
+2	2	0	33		21	47
+2	2	0	34		20	48
+2	2	0	35		21	48
+2	2	0	36		20	49
+2	2	0	37		21	49
+2	2	0	38		20	50
+2	2	0	39		21	50
+2	2	0	40		20	51
+2	2	0	41		21	51
+2	2	0	42		20	52
+2	2	0	43		21	52
+2	2	0	44		20	53
+2	2	0	45		-1	-1
+2	2	0	46		21	53
+2	2	0	47		20	54
+2	2	0	48		21	54
+2	2	0	49		20	55
+2	2	0	50		21	55
+2	2	0	51		20	56
+2	2	0	52		21	56
+2	2	0	53		20	57
+2	2	0	54		21	57
+2	2	0	55		20	58
+2	2	0	56		-1	-1
+2	2	0	57		21	58
+2	2	0	58		20	59
+2	2	0	59		21	59
+2	2	0	60		20	60
+2	2	0	61		21	60
+2	2	0	62		20	61
+2	2	0	63		21	61
+2	2	0	64		20	62
+2	2	0	65		21	62
+2	2	0	66		20	63
+2	2	0	67		21	63
+2	2	1	0		20	0
+2	2	1	1		21	0
+2	2	1	2		20	1
+2	2	1	3		21	1
+2	2	1	4		20	2
+2	2	1	5		21	2
+2	2	1	6		20	3
+2	2	1	7		21	3
+2	2	1	8		20	4
+2	2	1	9		21	4
+2	2	1	10		20	5
+2	2	1	11		-1	-1
+2	2	1	12		21	5
+2	2	1	13		20	6
+2	2	1	14		21	6
+2	2	1	15		20	7
+2	2	1	16		21	7
+2	2	1	17		20	8
+2	2	1	18		21	8
+2	2	1	19		20	9
+2	2	1	20		21	9
+2	2	1	21		20	10
+2	2	1	22		-1	-1
+2	2	1	23		21	10
+2	2	1	24		20	11
+2	2	1	25		21	11
+2	2	1	26		20	12
+2	2	1	27		21	12
+2	2	1	28		20	13
+2	2	1	29		21	13
+2	2	1	30		20	14
+2	2	1	31		21	14
+2	2	1	32		20	15
+2	2	1	33		21	15
+2	2	1	34		20	16
+2	2	1	35		21	16
+2	2	1	36		20	17
+2	2	1	37		21	17
+2	2	1	38		20	18
+2	2	1	39		21	18
+2	2	1	40		20	19
+2	2	1	41		21	19
+2	2	1	42		20	20
+2	2	1	43		21	20
+2	2	1	44		20	21
+2	2	1	45		-1	-1
+2	2	1	46		21	21
+2	2	1	47		20	22
+2	2	1	48		21	22
+2	2	1	49		20	23
+2	2	1	50		21	23
+2	2	1	51		20	24
+2	2	1	52		21	24
+2	2	1	53		20	25
+2	2	1	54		21	25
+2	2	1	55		20	26
+2	2	1	56		-1	-1
+2	2	1	57		21	26
+2	2	1	58		20	27
+2	2	1	59		21	27
+2	2	1	60		20	28
+2	2	1	61		21	28
+2	2	1	62		20	29
+2	2	1	63		21	29
+2	2	1	64		20	30
+2	2	1	65		21	30
+2	2	1	66		20	31
+2	2	1	67		21	31
+2	2	2	0		22	32
+2	2	2	1		23	32
+2	2	2	2		22	33
+2	2	2	3		23	33
+2	2	2	4		22	34
+2	2	2	5		23	34
+2	2	2	6		22	35
+2	2	2	7		23	35
+2	2	2	8		22	36
+2	2	2	9		23	36
+2	2	2	10		22	37
+2	2	2	11		-1	-1
+2	2	2	12		23	37
+2	2	2	13		22	38
+2	2	2	14		23	38
+2	2	2	15		22	39
+2	2	2	16		23	39
+2	2	2	17		22	40
+2	2	2	18		23	40
+2	2	2	19		22	41
+2	2	2	20		23	41
+2	2	2	21		22	42
+2	2	2	22		-1	-1
+2	2	2	23		23	42
+2	2	2	24		22	43
+2	2	2	25		23	43
+2	2	2	26		22	44
+2	2	2	27		23	44
+2	2	2	28		22	45
+2	2	2	29		23	45
+2	2	2	30		22	46
+2	2	2	31		23	46
+2	2	2	32		22	47
+2	2	2	33		23	47
+2	2	2	34		22	48
+2	2	2	35		23	48
+2	2	2	36		22	49
+2	2	2	37		23	49
+2	2	2	38		22	50
+2	2	2	39		23	50
+2	2	2	40		22	51
+2	2	2	41		23	51
+2	2	2	42		22	52
+2	2	2	43		23	52
+2	2	2	44		22	53
+2	2	2	45		-1	-1
+2	2	2	46		23	53
+2	2	2	47		22	54
+2	2	2	48		23	54
+2	2	2	49		22	55
+2	2	2	50		23	55
+2	2	2	51		22	56
+2	2	2	52		23	56
+2	2	2	53		22	57
+2	2	2	54		23	57
+2	2	2	55		22	58
+2	2	2	56		-1	-1
+2	2	2	57		23	58
+2	2	2	58		22	59
+2	2	2	59		23	59
+2	2	2	60		22	60
+2	2	2	61		23	60
+2	2	2	62		22	61
+2	2	2	63		23	61
+2	2	2	64		22	62
+2	2	2	65		23	62
+2	2	2	66		22	63
+2	2	2	67		23	63
+2	2	3	0		22	0
+2	2	3	1		23	0
+2	2	3	2		22	1
+2	2	3	3		23	1
+2	2	3	4		22	2
+2	2	3	5		23	2
+2	2	3	6		22	3
+2	2	3	7		23	3
+2	2	3	8		22	4
+2	2	3	9		23	4
+2	2	3	10		22	5
+2	2	3	11		-1	-1
+2	2	3	12		23	5
+2	2	3	13		22	6
+2	2	3	14		23	6
+2	2	3	15		22	7
+2	2	3	16		23	7
+2	2	3	17		22	8
+2	2	3	18		23	8
+2	2	3	19		22	9
+2	2	3	20		23	9
+2	2	3	21		22	10
+2	2	3	22		-1	-1
+2	2	3	23		23	10
+2	2	3	24		22	11
+2	2	3	25		23	11
+2	2	3	26		22	12
+2	2	3	27		23	12
+2	2	3	28		22	13
+2	2	3	29		23	13
+2	2	3	30		22	14
+2	2	3	31		23	14
+2	2	3	32		22	15
+2	2	3	33		23	15
+2	2	3	34		22	16
+2	2	3	35		23	16
+2	2	3	36		22	17
+2	2	3	37		23	17
+2	2	3	38		22	18
+2	2	3	39		23	18
+2	2	3	40		22	19
+2	2	3	41		23	19
+2	2	3	42		22	20
+2	2	3	43		23	20
+2	2	3	44		22	21
+2	2	3	45		-1	-1
+2	2	3	46		23	21
+2	2	3	47		22	22
+2	2	3	48		23	22
+2	2	3	49		22	23
+2	2	3	50		23	23
+2	2	3	51		22	24
+2	2	3	52		23	24
+2	2	3	53		22	25
+2	2	3	54		23	25
+2	2	3	55		22	26
+2	2	3	56		-1	-1
+2	2	3	57		23	26
+2	2	3	58		22	27
+2	2	3	59		23	27
+2	2	3	60		22	28
+2	2	3	61		23	28
+2	2	3	62		22	29
+2	2	3	63		23	29
+2	2	3	64		22	30
+2	2	3	65		23	30
+2	2	3	66		22	31
+2	2	3	67		23	31
+2	3	0	0		23	95
+2	3	0	1		22	95
+2	3	0	2		23	94
+2	3	0	3		22	94
+2	3	0	4		23	93
+2	3	0	5		22	93
+2	3	0	6		23	92
+2	3	0	7		22	92
+2	3	0	8		23	91
+2	3	0	9		22	91
+2	3	0	10		23	90
+2	3	0	11		-1	-1
+2	3	0	12		22	90
+2	3	0	13		23	89
+2	3	0	14		22	89
+2	3	0	15		23	88
+2	3	0	16		22	88
+2	3	0	17		23	87
+2	3	0	18		22	87
+2	3	0	19		23	86
+2	3	0	20		22	86
+2	3	0	21		23	85
+2	3	0	22		-1	-1
+2	3	0	23		22	85
+2	3	0	24		23	84
+2	3	0	25		22	84
+2	3	0	26		23	83
+2	3	0	27		22	83
+2	3	0	28		23	82
+2	3	0	29		22	82
+2	3	0	30		23	81
+2	3	0	31		22	81
+2	3	0	32		23	80
+2	3	0	33		22	80
+2	3	0	34		23	79
+2	3	0	35		22	79
+2	3	0	36		23	78
+2	3	0	37		22	78
+2	3	0	38		23	77
+2	3	0	39		22	77
+2	3	0	40		23	76
+2	3	0	41		22	76
+2	3	0	42		23	75
+2	3	0	43		22	75
+2	3	0	44		23	74
+2	3	0	45		-1	-1
+2	3	0	46		22	74
+2	3	0	47		23	73
+2	3	0	48		22	73
+2	3	0	49		23	72
+2	3	0	50		22	72
+2	3	0	51		23	71
+2	3	0	52		22	71
+2	3	0	53		23	70
+2	3	0	54		22	70
+2	3	0	55		23	69
+2	3	0	56		-1	-1
+2	3	0	57		22	69
+2	3	0	58		23	68
+2	3	0	59		22	68
+2	3	0	60		23	67
+2	3	0	61		22	67
+2	3	0	62		23	66
+2	3	0	63		22	66
+2	3	0	64		23	65
+2	3	0	65		22	65
+2	3	0	66		23	64
+2	3	0	67		22	64
+2	3	1	0		23	127
+2	3	1	1		22	127
+2	3	1	2		23	126
+2	3	1	3		22	126
+2	3	1	4		23	125
+2	3	1	5		22	125
+2	3	1	6		23	124
+2	3	1	7		22	124
+2	3	1	8		23	123
+2	3	1	9		22	123
+2	3	1	10		23	122
+2	3	1	11		-1	-1
+2	3	1	12		22	122
+2	3	1	13		23	121
+2	3	1	14		22	121
+2	3	1	15		23	120
+2	3	1	16		22	120
+2	3	1	17		23	119
+2	3	1	18		22	119
+2	3	1	19		23	118
+2	3	1	20		22	118
+2	3	1	21		23	117
+2	3	1	22		-1	-1
+2	3	1	23		22	117
+2	3	1	24		23	116
+2	3	1	25		22	116
+2	3	1	26		23	115
+2	3	1	27		22	115
+2	3	1	28		23	114
+2	3	1	29		22	114
+2	3	1	30		23	113
+2	3	1	31		22	113
+2	3	1	32		23	112
+2	3	1	33		22	112
+2	3	1	34		23	111
+2	3	1	35		22	111
+2	3	1	36		23	110
+2	3	1	37		22	110
+2	3	1	38		23	109
+2	3	1	39		22	109
+2	3	1	40		23	108
+2	3	1	41		22	108
+2	3	1	42		23	107
+2	3	1	43		22	107
+2	3	1	44		23	106
+2	3	1	45		-1	-1
+2	3	1	46		22	106
+2	3	1	47		23	105
+2	3	1	48		22	105
+2	3	1	49		23	104
+2	3	1	50		22	104
+2	3	1	51		23	103
+2	3	1	52		22	103
+2	3	1	53		23	102
+2	3	1	54		22	102
+2	3	1	55		23	101
+2	3	1	56		-1	-1
+2	3	1	57		22	101
+2	3	1	58		23	100
+2	3	1	59		22	100
+2	3	1	60		23	99
+2	3	1	61		22	99
+2	3	1	62		23	98
+2	3	1	63		22	98
+2	3	1	64		23	97
+2	3	1	65		22	97
+2	3	1	66		23	96
+2	3	1	67		22	96
+2	3	2	0		21	95
+2	3	2	1		20	95
+2	3	2	2		21	94
+2	3	2	3		20	94
+2	3	2	4		21	93
+2	3	2	5		20	93
+2	3	2	6		21	92
+2	3	2	7		20	92
+2	3	2	8		21	91
+2	3	2	9		20	91
+2	3	2	10		21	90
+2	3	2	11		-1	-1
+2	3	2	12		20	90
+2	3	2	13		21	89
+2	3	2	14		20	89
+2	3	2	15		21	88
+2	3	2	16		20	88
+2	3	2	17		21	87
+2	3	2	18		20	87
+2	3	2	19		21	86
+2	3	2	20		20	86
+2	3	2	21		21	85
+2	3	2	22		-1	-1
+2	3	2	23		20	85
+2	3	2	24		21	84
+2	3	2	25		20	84
+2	3	2	26		21	83
+2	3	2	27		20	83
+2	3	2	28		21	82
+2	3	2	29		20	82
+2	3	2	30		21	81
+2	3	2	31		20	81
+2	3	2	32		21	80
+2	3	2	33		20	80
+2	3	2	34		21	79
+2	3	2	35		20	79
+2	3	2	36		21	78
+2	3	2	37		20	78
+2	3	2	38		21	77
+2	3	2	39		20	77
+2	3	2	40		21	76
+2	3	2	41		20	76
+2	3	2	42		21	75
+2	3	2	43		20	75
+2	3	2	44		21	74
+2	3	2	45		-1	-1
+2	3	2	46		20	74
+2	3	2	47		21	73
+2	3	2	48		20	73
+2	3	2	49		21	72
+2	3	2	50		20	72
+2	3	2	51		21	71
+2	3	2	52		20	71
+2	3	2	53		21	70
+2	3	2	54		20	70
+2	3	2	55		21	69
+2	3	2	56		-1	-1
+2	3	2	57		20	69
+2	3	2	58		21	68
+2	3	2	59		20	68
+2	3	2	60		21	67
+2	3	2	61		20	67
+2	3	2	62		21	66
+2	3	2	63		20	66
+2	3	2	64		21	65
+2	3	2	65		20	65
+2	3	2	66		21	64
+2	3	2	67		20	64
+2	3	3	0		21	127
+2	3	3	1		20	127
+2	3	3	2		21	126
+2	3	3	3		20	126
+2	3	3	4		21	125
+2	3	3	5		20	125
+2	3	3	6		21	124
+2	3	3	7		20	124
+2	3	3	8		21	123
+2	3	3	9		20	123
+2	3	3	10		21	122
+2	3	3	11		-1	-1
+2	3	3	12		20	122
+2	3	3	13		21	121
+2	3	3	14		20	121
+2	3	3	15		21	120
+2	3	3	16		20	120
+2	3	3	17		21	119
+2	3	3	18		20	119
+2	3	3	19		21	118
+2	3	3	20		20	118
+2	3	3	21		21	117
+2	3	3	22		-1	-1
+2	3	3	23		20	117
+2	3	3	24		21	116
+2	3	3	25		20	116
+2	3	3	26		21	115
+2	3	3	27		20	115
+2	3	3	28		21	114
+2	3	3	29		20	114
+2	3	3	30		21	113
+2	3	3	31		20	113
+2	3	3	32		21	112
+2	3	3	33		20	112
+2	3	3	34		21	111
+2	3	3	35		20	111
+2	3	3	36		21	110
+2	3	3	37		20	110
+2	3	3	38		21	109
+2	3	3	39		20	109
+2	3	3	40		21	108
+2	3	3	41		20	108
+2	3	3	42		21	107
+2	3	3	43		20	107
+2	3	3	44		21	106
+2	3	3	45		-1	-1
+2	3	3	46		20	106
+2	3	3	47		21	105
+2	3	3	48		20	105
+2	3	3	49		21	104
+2	3	3	50		20	104
+2	3	3	51		21	103
+2	3	3	52		20	103
+2	3	3	53		21	102
+2	3	3	54		20	102
+2	3	3	55		21	101
+2	3	3	56		-1	-1
+2	3	3	57		20	101
+2	3	3	58		21	100
+2	3	3	59		20	100
+2	3	3	60		21	99
+2	3	3	61		20	99
+2	3	3	62		21	98
+2	3	3	63		20	98
+2	3	3	64		21	97
+2	3	3	65		20	97
+2	3	3	66		21	96
+2	3	3	67		20	96
+3	0	0	0		24	32
+3	0	0	1		25	32
+3	0	0	2		24	33
+3	0	0	3		25	33
+3	0	0	4		24	34
+3	0	0	5		25	34
+3	0	0	6		24	35
+3	0	0	7		25	35
+3	0	0	8		24	36
+3	0	0	9		25	36
+3	0	0	10		24	37
+3	0	0	11		-1	-1
+3	0	0	12		25	37
+3	0	0	13		24	38
+3	0	0	14		25	38
+3	0	0	15		24	39
+3	0	0	16		25	39
+3	0	0	17		24	40
+3	0	0	18		25	40
+3	0	0	19		24	41
+3	0	0	20		25	41
+3	0	0	21		24	42
+3	0	0	22		-1	-1
+3	0	0	23		25	42
+3	0	0	24		24	43
+3	0	0	25		25	43
+3	0	0	26		24	44
+3	0	0	27		25	44
+3	0	0	28		24	45
+3	0	0	29		25	45
+3	0	0	30		24	46
+3	0	0	31		25	46
+3	0	0	32		24	47
+3	0	0	33		25	47
+3	0	0	34		24	48
+3	0	0	35		25	48
+3	0	0	36		24	49
+3	0	0	37		25	49
+3	0	0	38		24	50
+3	0	0	39		25	50
+3	0	0	40		24	51
+3	0	0	41		25	51
+3	0	0	42		24	52
+3	0	0	43		25	52
+3	0	0	44		24	53
+3	0	0	45		-1	-1
+3	0	0	46		25	53
+3	0	0	47		24	54
+3	0	0	48		25	54
+3	0	0	49		24	55
+3	0	0	50		25	55
+3	0	0	51		24	56
+3	0	0	52		25	56
+3	0	0	53		24	57
+3	0	0	54		25	57
+3	0	0	55		24	58
+3	0	0	56		-1	-1
+3	0	0	57		25	58
+3	0	0	58		24	59
+3	0	0	59		25	59
+3	0	0	60		24	60
+3	0	0	61		25	60
+3	0	0	62		24	61
+3	0	0	63		25	61
+3	0	0	64		24	62
+3	0	0	65		25	62
+3	0	0	66		24	63
+3	0	0	67		25	63
+3	0	1	0		24	0
+3	0	1	1		25	0
+3	0	1	2		24	1
+3	0	1	3		25	1
+3	0	1	4		24	2
+3	0	1	5		25	2
+3	0	1	6		24	3
+3	0	1	7		25	3
+3	0	1	8		24	4
+3	0	1	9		25	4
+3	0	1	10		24	5
+3	0	1	11		-1	-1
+3	0	1	12		25	5
+3	0	1	13		24	6
+3	0	1	14		25	6
+3	0	1	15		24	7
+3	0	1	16		25	7
+3	0	1	17		24	8
+3	0	1	18		25	8
+3	0	1	19		24	9
+3	0	1	20		25	9
+3	0	1	21		24	10
+3	0	1	22		-1	-1
+3	0	1	23		25	10
+3	0	1	24		24	11
+3	0	1	25		25	11
+3	0	1	26		24	12
+3	0	1	27		25	12
+3	0	1	28		24	13
+3	0	1	29		25	13
+3	0	1	30		24	14
+3	0	1	31		25	14
+3	0	1	32		24	15
+3	0	1	33		25	15
+3	0	1	34		24	16
+3	0	1	35		25	16
+3	0	1	36		24	17
+3	0	1	37		25	17
+3	0	1	38		24	18
+3	0	1	39		25	18
+3	0	1	40		24	19
+3	0	1	41		25	19
+3	0	1	42		24	20
+3	0	1	43		25	20
+3	0	1	44		24	21
+3	0	1	45		-1	-1
+3	0	1	46		25	21
+3	0	1	47		24	22
+3	0	1	48		25	22
+3	0	1	49		24	23
+3	0	1	50		25	23
+3	0	1	51		24	24
+3	0	1	52		25	24
+3	0	1	53		24	25
+3	0	1	54		25	25
+3	0	1	55		24	26
+3	0	1	56		-1	-1
+3	0	1	57		25	26
+3	0	1	58		24	27
+3	0	1	59		25	27
+3	0	1	60		24	28
+3	0	1	61		25	28
+3	0	1	62		24	29
+3	0	1	63		25	29
+3	0	1	64		24	30
+3	0	1	65		25	30
+3	0	1	66		24	31
+3	0	1	67		25	31
+3	0	2	0		26	32
+3	0	2	1		27	32
+3	0	2	2		26	33
+3	0	2	3		27	33
+3	0	2	4		26	34
+3	0	2	5		27	34
+3	0	2	6		26	35
+3	0	2	7		27	35
+3	0	2	8		26	36
+3	0	2	9		27	36
+3	0	2	10		26	37
+3	0	2	11		-1	-1
+3	0	2	12		27	37
+3	0	2	13		26	38
+3	0	2	14		27	38
+3	0	2	15		26	39
+3	0	2	16		27	39
+3	0	2	17		26	40
+3	0	2	18		27	40
+3	0	2	19		26	41
+3	0	2	20		27	41
+3	0	2	21		26	42
+3	0	2	22		-1	-1
+3	0	2	23		27	42
+3	0	2	24		26	43
+3	0	2	25		27	43
+3	0	2	26		26	44
+3	0	2	27		27	44
+3	0	2	28		26	45
+3	0	2	29		27	45
+3	0	2	30		26	46
+3	0	2	31		27	46
+3	0	2	32		26	47
+3	0	2	33		27	47
+3	0	2	34		26	48
+3	0	2	35		27	48
+3	0	2	36		26	49
+3	0	2	37		27	49
+3	0	2	38		26	50
+3	0	2	39		27	50
+3	0	2	40		26	51
+3	0	2	41		27	51
+3	0	2	42		26	52
+3	0	2	43		27	52
+3	0	2	44		26	53
+3	0	2	45		-1	-1
+3	0	2	46		27	53
+3	0	2	47		26	54
+3	0	2	48		27	54
+3	0	2	49		26	55
+3	0	2	50		27	55
+3	0	2	51		26	56
+3	0	2	52		27	56
+3	0	2	53		26	57
+3	0	2	54		27	57
+3	0	2	55		26	58
+3	0	2	56		-1	-1
+3	0	2	57		27	58
+3	0	2	58		26	59
+3	0	2	59		27	59
+3	0	2	60		26	60
+3	0	2	61		27	60
+3	0	2	62		26	61
+3	0	2	63		27	61
+3	0	2	64		26	62
+3	0	2	65		27	62
+3	0	2	66		26	63
+3	0	2	67		27	63
+3	0	3	0		26	0
+3	0	3	1		27	0
+3	0	3	2		26	1
+3	0	3	3		27	1
+3	0	3	4		26	2
+3	0	3	5		27	2
+3	0	3	6		26	3
+3	0	3	7		27	3
+3	0	3	8		26	4
+3	0	3	9		27	4
+3	0	3	10		26	5
+3	0	3	11		-1	-1
+3	0	3	12		27	5
+3	0	3	13		26	6
+3	0	3	14		27	6
+3	0	3	15		26	7
+3	0	3	16		27	7
+3	0	3	17		26	8
+3	0	3	18		27	8
+3	0	3	19		26	9
+3	0	3	20		27	9
+3	0	3	21		26	10
+3	0	3	22		-1	-1
+3	0	3	23		27	10
+3	0	3	24		26	11
+3	0	3	25		27	11
+3	0	3	26		26	12
+3	0	3	27		27	12
+3	0	3	28		26	13
+3	0	3	29		27	13
+3	0	3	30		26	14
+3	0	3	31		27	14
+3	0	3	32		26	15
+3	0	3	33		27	15
+3	0	3	34		26	16
+3	0	3	35		27	16
+3	0	3	36		26	17
+3	0	3	37		27	17
+3	0	3	38		26	18
+3	0	3	39		27	18
+3	0	3	40		26	19
+3	0	3	41		27	19
+3	0	3	42		26	20
+3	0	3	43		27	20
+3	0	3	44		26	21
+3	0	3	45		-1	-1
+3	0	3	46		27	21
+3	0	3	47		26	22
+3	0	3	48		27	22
+3	0	3	49		26	23
+3	0	3	50		27	23
+3	0	3	51		26	24
+3	0	3	52		27	24
+3	0	3	53		26	25
+3	0	3	54		27	25
+3	0	3	55		26	26
+3	0	3	56		-1	-1
+3	0	3	57		27	26
+3	0	3	58		26	27
+3	0	3	59		27	27
+3	0	3	60		26	28
+3	0	3	61		27	28
+3	0	3	62		26	29
+3	0	3	63		27	29
+3	0	3	64		26	30
+3	0	3	65		27	30
+3	0	3	66		26	31
+3	0	3	67		27	31
+3	1	0	0		27	95
+3	1	0	1		26	95
+3	1	0	2		27	94
+3	1	0	3		26	94
+3	1	0	4		27	93
+3	1	0	5		26	93
+3	1	0	6		27	92
+3	1	0	7		26	92
+3	1	0	8		27	91
+3	1	0	9		26	91
+3	1	0	10		27	90
+3	1	0	11		-1	-1
+3	1	0	12		26	90
+3	1	0	13		27	89
+3	1	0	14		26	89
+3	1	0	15		27	88
+3	1	0	16		26	88
+3	1	0	17		27	87
+3	1	0	18		26	87
+3	1	0	19		27	86
+3	1	0	20		26	86
+3	1	0	21		27	85
+3	1	0	22		-1	-1
+3	1	0	23		26	85
+3	1	0	24		27	84
+3	1	0	25		26	84
+3	1	0	26		27	83
+3	1	0	27		26	83
+3	1	0	28		27	82
+3	1	0	29		26	82
+3	1	0	30		27	81
+3	1	0	31		26	81
+3	1	0	32		27	80
+3	1	0	33		26	80
+3	1	0	34		27	79
+3	1	0	35		26	79
+3	1	0	36		27	78
+3	1	0	37		26	78
+3	1	0	38		27	77
+3	1	0	39		26	77
+3	1	0	40		27	76
+3	1	0	41		26	76
+3	1	0	42		27	75
+3	1	0	43		26	75
+3	1	0	44		27	74
+3	1	0	45		-1	-1
+3	1	0	46		26	74
+3	1	0	47		27	73
+3	1	0	48		26	73
+3	1	0	49		27	72
+3	1	0	50		26	72
+3	1	0	51		27	71
+3	1	0	52		26	71
+3	1	0	53		27	70
+3	1	0	54		26	70
+3	1	0	55		27	69
+3	1	0	56		-1	-1
+3	1	0	57		26	69
+3	1	0	58		27	68
+3	1	0	59		26	68
+3	1	0	60		27	67
+3	1	0	61		26	67
+3	1	0	62		27	66
+3	1	0	63		26	66
+3	1	0	64		27	65
+3	1	0	65		26	65
+3	1	0	66		27	64
+3	1	0	67		26	64
+3	1	1	0		27	127
+3	1	1	1		26	127
+3	1	1	2		27	126
+3	1	1	3		26	126
+3	1	1	4		27	125
+3	1	1	5		26	125
+3	1	1	6		27	124
+3	1	1	7		26	124
+3	1	1	8		27	123
+3	1	1	9		26	123
+3	1	1	10		27	122
+3	1	1	11		-1	-1
+3	1	1	12		26	122
+3	1	1	13		27	121
+3	1	1	14		26	121
+3	1	1	15		27	120
+3	1	1	16		26	120
+3	1	1	17		27	119
+3	1	1	18		26	119
+3	1	1	19		27	118
+3	1	1	20		26	118
+3	1	1	21		27	117
+3	1	1	22		-1	-1
+3	1	1	23		26	117
+3	1	1	24		27	116
+3	1	1	25		26	116
+3	1	1	26		27	115
+3	1	1	27		26	115
+3	1	1	28		27	114
+3	1	1	29		26	114
+3	1	1	30		27	113
+3	1	1	31		26	113
+3	1	1	32		27	112
+3	1	1	33		26	112
+3	1	1	34		27	111
+3	1	1	35		26	111
+3	1	1	36		27	110
+3	1	1	37		26	110
+3	1	1	38		27	109
+3	1	1	39		26	109
+3	1	1	40		27	108
+3	1	1	41		26	108
+3	1	1	42		27	107
+3	1	1	43		26	107
+3	1	1	44		27	106
+3	1	1	45		-1	-1
+3	1	1	46		26	106
+3	1	1	47		27	105
+3	1	1	48		26	105
+3	1	1	49		27	104
+3	1	1	50		26	104
+3	1	1	51		27	103
+3	1	1	52		26	103
+3	1	1	53		27	102
+3	1	1	54		26	102
+3	1	1	55		27	101
+3	1	1	56		-1	-1
+3	1	1	57		26	101
+3	1	1	58		27	100
+3	1	1	59		26	100
+3	1	1	60		27	99
+3	1	1	61		26	99
+3	1	1	62		27	98
+3	1	1	63		26	98
+3	1	1	64		27	97
+3	1	1	65		26	97
+3	1	1	66		27	96
+3	1	1	67		26	96
+3	1	2	0		25	95
+3	1	2	1		24	95
+3	1	2	2		25	94
+3	1	2	3		24	94
+3	1	2	4		25	93
+3	1	2	5		24	93
+3	1	2	6		25	92
+3	1	2	7		24	92
+3	1	2	8		25	91
+3	1	2	9		24	91
+3	1	2	10		25	90
+3	1	2	11		-1	-1
+3	1	2	12		24	90
+3	1	2	13		25	89
+3	1	2	14		24	89
+3	1	2	15		25	88
+3	1	2	16		24	88
+3	1	2	17		25	87
+3	1	2	18		24	87
+3	1	2	19		25	86
+3	1	2	20		24	86
+3	1	2	21		25	85
+3	1	2	22		-1	-1
+3	1	2	23		24	85
+3	1	2	24		25	84
+3	1	2	25		24	84
+3	1	2	26		25	83
+3	1	2	27		24	83
+3	1	2	28		25	82
+3	1	2	29		24	82
+3	1	2	30		25	81
+3	1	2	31		24	81
+3	1	2	32		25	80
+3	1	2	33		24	80
+3	1	2	34		25	79
+3	1	2	35		24	79
+3	1	2	36		25	78
+3	1	2	37		24	78
+3	1	2	38		25	77
+3	1	2	39		24	77
+3	1	2	40		25	76
+3	1	2	41		24	76
+3	1	2	42		25	75
+3	1	2	43		24	75
+3	1	2	44		25	74
+3	1	2	45		-1	-1
+3	1	2	46		24	74
+3	1	2	47		25	73
+3	1	2	48		24	73
+3	1	2	49		25	72
+3	1	2	50		24	72
+3	1	2	51		25	71
+3	1	2	52		24	71
+3	1	2	53		25	70
+3	1	2	54		24	70
+3	1	2	55		25	69
+3	1	2	56		-1	-1
+3	1	2	57		24	69
+3	1	2	58		25	68
+3	1	2	59		24	68
+3	1	2	60		25	67
+3	1	2	61		24	67
+3	1	2	62		25	66
+3	1	2	63		24	66
+3	1	2	64		25	65
+3	1	2	65		24	65
+3	1	2	66		25	64
+3	1	2	67		24	64
+3	1	3	0		25	127
+3	1	3	1		24	127
+3	1	3	2		25	126
+3	1	3	3		24	126
+3	1	3	4		25	125
+3	1	3	5		24	125
+3	1	3	6		25	124
+3	1	3	7		24	124
+3	1	3	8		25	123
+3	1	3	9		24	123
+3	1	3	10		25	122
+3	1	3	11		-1	-1
+3	1	3	12		24	122
+3	1	3	13		25	121
+3	1	3	14		24	121
+3	1	3	15		25	120
+3	1	3	16		24	120
+3	1	3	17		25	119
+3	1	3	18		24	119
+3	1	3	19		25	118
+3	1	3	20		24	118
+3	1	3	21		25	117
+3	1	3	22		-1	-1
+3	1	3	23		24	117
+3	1	3	24		25	116
+3	1	3	25		24	116
+3	1	3	26		25	115
+3	1	3	27		24	115
+3	1	3	28		25	114
+3	1	3	29		24	114
+3	1	3	30		25	113
+3	1	3	31		24	113
+3	1	3	32		25	112
+3	1	3	33		24	112
+3	1	3	34		25	111
+3	1	3	35		24	111
+3	1	3	36		25	110
+3	1	3	37		24	110
+3	1	3	38		25	109
+3	1	3	39		24	109
+3	1	3	40		25	108
+3	1	3	41		24	108
+3	1	3	42		25	107
+3	1	3	43		24	107
+3	1	3	44		25	106
+3	1	3	45		-1	-1
+3	1	3	46		24	106
+3	1	3	47		25	105
+3	1	3	48		24	105
+3	1	3	49		25	104
+3	1	3	50		24	104
+3	1	3	51		25	103
+3	1	3	52		24	103
+3	1	3	53		25	102
+3	1	3	54		24	102
+3	1	3	55		25	101
+3	1	3	56		-1	-1
+3	1	3	57		24	101
+3	1	3	58		25	100
+3	1	3	59		24	100
+3	1	3	60		25	99
+3	1	3	61		24	99
+3	1	3	62		25	98
+3	1	3	63		24	98
+3	1	3	64		25	97
+3	1	3	65		24	97
+3	1	3	66		25	96
+3	1	3	67		24	96
+3	2	0	0		28	32
+3	2	0	1		29	32
+3	2	0	2		28	33
+3	2	0	3		29	33
+3	2	0	4		28	34
+3	2	0	5		29	34
+3	2	0	6		28	35
+3	2	0	7		29	35
+3	2	0	8		28	36
+3	2	0	9		29	36
+3	2	0	10		28	37
+3	2	0	11		-1	-1
+3	2	0	12		29	37
+3	2	0	13		28	38
+3	2	0	14		29	38
+3	2	0	15		28	39
+3	2	0	16		29	39
+3	2	0	17		28	40
+3	2	0	18		29	40
+3	2	0	19		28	41
+3	2	0	20		29	41
+3	2	0	21		28	42
+3	2	0	22		-1	-1
+3	2	0	23		29	42
+3	2	0	24		28	43
+3	2	0	25		29	43
+3	2	0	26		28	44
+3	2	0	27		29	44
+3	2	0	28		28	45
+3	2	0	29		29	45
+3	2	0	30		28	46
+3	2	0	31		29	46
+3	2	0	32		28	47
+3	2	0	33		29	47
+3	2	0	34		28	48
+3	2	0	35		29	48
+3	2	0	36		28	49
+3	2	0	37		29	49
+3	2	0	38		28	50
+3	2	0	39		29	50
+3	2	0	40		28	51
+3	2	0	41		29	51
+3	2	0	42		28	52
+3	2	0	43		29	52
+3	2	0	44		28	53
+3	2	0	45		-1	-1
+3	2	0	46		29	53
+3	2	0	47		28	54
+3	2	0	48		29	54
+3	2	0	49		28	55
+3	2	0	50		29	55
+3	2	0	51		28	56
+3	2	0	52		29	56
+3	2	0	53		28	57
+3	2	0	54		29	57
+3	2	0	55		28	58
+3	2	0	56		-1	-1
+3	2	0	57		29	58
+3	2	0	58		28	59
+3	2	0	59		29	59
+3	2	0	60		28	60
+3	2	0	61		29	60
+3	2	0	62		28	61
+3	2	0	63		29	61
+3	2	0	64		28	62
+3	2	0	65		29	62
+3	2	0	66		28	63
+3	2	0	67		29	63
+3	2	1	0		28	0
+3	2	1	1		29	0
+3	2	1	2		28	1
+3	2	1	3		29	1
+3	2	1	4		28	2
+3	2	1	5		29	2
+3	2	1	6		28	3
+3	2	1	7		29	3
+3	2	1	8		28	4
+3	2	1	9		29	4
+3	2	1	10		28	5
+3	2	1	11		-1	-1
+3	2	1	12		29	5
+3	2	1	13		28	6
+3	2	1	14		29	6
+3	2	1	15		28	7
+3	2	1	16		29	7
+3	2	1	17		28	8
+3	2	1	18		29	8
+3	2	1	19		28	9
+3	2	1	20		29	9
+3	2	1	21		28	10
+3	2	1	22		-1	-1
+3	2	1	23		29	10
+3	2	1	24		28	11
+3	2	1	25		29	11
+3	2	1	26		28	12
+3	2	1	27		29	12
+3	2	1	28		28	13
+3	2	1	29		29	13
+3	2	1	30		28	14
+3	2	1	31		29	14
+3	2	1	32		28	15
+3	2	1	33		29	15
+3	2	1	34		28	16
+3	2	1	35		29	16
+3	2	1	36		28	17
+3	2	1	37		29	17
+3	2	1	38		28	18
+3	2	1	39		29	18
+3	2	1	40		28	19
+3	2	1	41		29	19
+3	2	1	42		28	20
+3	2	1	43		29	20
+3	2	1	44		28	21
+3	2	1	45		-1	-1
+3	2	1	46		29	21
+3	2	1	47		28	22
+3	2	1	48		29	22
+3	2	1	49		28	23
+3	2	1	50		29	23
+3	2	1	51		28	24
+3	2	1	52		29	24
+3	2	1	53		28	25
+3	2	1	54		29	25
+3	2	1	55		28	26
+3	2	1	56		-1	-1
+3	2	1	57		29	26
+3	2	1	58		28	27
+3	2	1	59		29	27
+3	2	1	60		28	28
+3	2	1	61		29	28
+3	2	1	62		28	29
+3	2	1	63		29	29
+3	2	1	64		28	30
+3	2	1	65		29	30
+3	2	1	66		28	31
+3	2	1	67		29	31
+3	2	2	0		30	32
+3	2	2	1		31	32
+3	2	2	2		30	33
+3	2	2	3		31	33
+3	2	2	4		30	34
+3	2	2	5		31	34
+3	2	2	6		30	35
+3	2	2	7		31	35
+3	2	2	8		30	36
+3	2	2	9		31	36
+3	2	2	10		30	37
+3	2	2	11		-1	-1
+3	2	2	12		31	37
+3	2	2	13		30	38
+3	2	2	14		31	38
+3	2	2	15		30	39
+3	2	2	16		31	39
+3	2	2	17		30	40
+3	2	2	18		31	40
+3	2	2	19		30	41
+3	2	2	20		31	41
+3	2	2	21		30	42
+3	2	2	22		-1	-1
+3	2	2	23		31	42
+3	2	2	24		30	43
+3	2	2	25		31	43
+3	2	2	26		30	44
+3	2	2	27		31	44
+3	2	2	28		30	45
+3	2	2	29		31	45
+3	2	2	30		30	46
+3	2	2	31		31	46
+3	2	2	32		30	47
+3	2	2	33		31	47
+3	2	2	34		30	48
+3	2	2	35		31	48
+3	2	2	36		30	49
+3	2	2	37		31	49
+3	2	2	38		30	50
+3	2	2	39		31	50
+3	2	2	40		30	51
+3	2	2	41		31	51
+3	2	2	42		30	52
+3	2	2	43		31	52
+3	2	2	44		30	53
+3	2	2	45		-1	-1
+3	2	2	46		31	53
+3	2	2	47		30	54
+3	2	2	48		31	54
+3	2	2	49		30	55
+3	2	2	50		31	55
+3	2	2	51		30	56
+3	2	2	52		31	56
+3	2	2	53		30	57
+3	2	2	54		31	57
+3	2	2	55		30	58
+3	2	2	56		-1	-1
+3	2	2	57		31	58
+3	2	2	58		30	59
+3	2	2	59		31	59
+3	2	2	60		30	60
+3	2	2	61		31	60
+3	2	2	62		30	61
+3	2	2	63		31	61
+3	2	2	64		30	62
+3	2	2	65		31	62
+3	2	2	66		30	63
+3	2	2	67		31	63
+3	2	3	0		30	0
+3	2	3	1		31	0
+3	2	3	2		30	1
+3	2	3	3		31	1
+3	2	3	4		30	2
+3	2	3	5		31	2
+3	2	3	6		30	3
+3	2	3	7		31	3
+3	2	3	8		30	4
+3	2	3	9		31	4
+3	2	3	10		30	5
+3	2	3	11		-1	-1
+3	2	3	12		31	5
+3	2	3	13		30	6
+3	2	3	14		31	6
+3	2	3	15		30	7
+3	2	3	16		31	7
+3	2	3	17		30	8
+3	2	3	18		31	8
+3	2	3	19		30	9
+3	2	3	20		31	9
+3	2	3	21		30	10
+3	2	3	22		-1	-1
+3	2	3	23		31	10
+3	2	3	24		30	11
+3	2	3	25		31	11
+3	2	3	26		30	12
+3	2	3	27		31	12
+3	2	3	28		30	13
+3	2	3	29		31	13
+3	2	3	30		30	14
+3	2	3	31		31	14
+3	2	3	32		30	15
+3	2	3	33		31	15
+3	2	3	34		30	16
+3	2	3	35		31	16
+3	2	3	36		30	17
+3	2	3	37		31	17
+3	2	3	38		30	18
+3	2	3	39		31	18
+3	2	3	40		30	19
+3	2	3	41		31	19
+3	2	3	42		30	20
+3	2	3	43		31	20
+3	2	3	44		30	21
+3	2	3	45		-1	-1
+3	2	3	46		31	21
+3	2	3	47		30	22
+3	2	3	48		31	22
+3	2	3	49		30	23
+3	2	3	50		31	23
+3	2	3	51		30	24
+3	2	3	52		31	24
+3	2	3	53		30	25
+3	2	3	54		31	25
+3	2	3	55		30	26
+3	2	3	56		-1	-1
+3	2	3	57		31	26
+3	2	3	58		30	27
+3	2	3	59		31	27
+3	2	3	60		30	28
+3	2	3	61		31	28
+3	2	3	62		30	29
+3	2	3	63		31	29
+3	2	3	64		30	30
+3	2	3	65		31	30
+3	2	3	66		30	31
+3	2	3	67		31	31
+3	3	0	0		31	95
+3	3	0	1		30	95
+3	3	0	2		31	94
+3	3	0	3		30	94
+3	3	0	4		31	93
+3	3	0	5		30	93
+3	3	0	6		31	92
+3	3	0	7		30	92
+3	3	0	8		31	91
+3	3	0	9		30	91
+3	3	0	10		31	90
+3	3	0	11		-1	-1
+3	3	0	12		30	90
+3	3	0	13		31	89
+3	3	0	14		30	89
+3	3	0	15		31	88
+3	3	0	16		30	88
+3	3	0	17		31	87
+3	3	0	18		30	87
+3	3	0	19		31	86
+3	3	0	20		30	86
+3	3	0	21		31	85
+3	3	0	22		-1	-1
+3	3	0	23		30	85
+3	3	0	24		31	84
+3	3	0	25		30	84
+3	3	0	26		31	83
+3	3	0	27		30	83
+3	3	0	28		31	82
+3	3	0	29		30	82
+3	3	0	30		31	81
+3	3	0	31		30	81
+3	3	0	32		31	80
+3	3	0	33		30	80
+3	3	0	34		31	79
+3	3	0	35		30	79
+3	3	0	36		31	78
+3	3	0	37		30	78
+3	3	0	38		31	77
+3	3	0	39		30	77
+3	3	0	40		31	76
+3	3	0	41		30	76
+3	3	0	42		31	75
+3	3	0	43		30	75
+3	3	0	44		31	74
+3	3	0	45		-1	-1
+3	3	0	46		30	74
+3	3	0	47		31	73
+3	3	0	48		30	73
+3	3	0	49		31	72
+3	3	0	50		30	72
+3	3	0	51		31	71
+3	3	0	52		30	71
+3	3	0	53		31	70
+3	3	0	54		30	70
+3	3	0	55		31	69
+3	3	0	56		-1	-1
+3	3	0	57		30	69
+3	3	0	58		31	68
+3	3	0	59		30	68
+3	3	0	60		31	67
+3	3	0	61		30	67
+3	3	0	62		31	66
+3	3	0	63		30	66
+3	3	0	64		31	65
+3	3	0	65		30	65
+3	3	0	66		31	64
+3	3	0	67		30	64
+3	3	1	0		31	127
+3	3	1	1		30	127
+3	3	1	2		31	126
+3	3	1	3		30	126
+3	3	1	4		31	125
+3	3	1	5		30	125
+3	3	1	6		31	124
+3	3	1	7		30	124
+3	3	1	8		31	123
+3	3	1	9		30	123
+3	3	1	10		31	122
+3	3	1	11		-1	-1
+3	3	1	12		30	122
+3	3	1	13		31	121
+3	3	1	14		30	121
+3	3	1	15		31	120
+3	3	1	16		30	120
+3	3	1	17		31	119
+3	3	1	18		30	119
+3	3	1	19		31	118
+3	3	1	20		30	118
+3	3	1	21		31	117
+3	3	1	22		-1	-1
+3	3	1	23		30	117
+3	3	1	24		31	116
+3	3	1	25		30	116
+3	3	1	26		31	115
+3	3	1	27		30	115
+3	3	1	28		31	114
+3	3	1	29		30	114
+3	3	1	30		31	113
+3	3	1	31		30	113
+3	3	1	32		31	112
+3	3	1	33		30	112
+3	3	1	34		31	111
+3	3	1	35		30	111
+3	3	1	36		31	110
+3	3	1	37		30	110
+3	3	1	38		31	109
+3	3	1	39		30	109
+3	3	1	40		31	108
+3	3	1	41		30	108
+3	3	1	42		31	107
+3	3	1	43		30	107
+3	3	1	44		31	106
+3	3	1	45		-1	-1
+3	3	1	46		30	106
+3	3	1	47		31	105
+3	3	1	48		30	105
+3	3	1	49		31	104
+3	3	1	50		30	104
+3	3	1	51		31	103
+3	3	1	52		30	103
+3	3	1	53		31	102
+3	3	1	54		30	102
+3	3	1	55		31	101
+3	3	1	56		-1	-1
+3	3	1	57		30	101
+3	3	1	58		31	100
+3	3	1	59		30	100
+3	3	1	60		31	99
+3	3	1	61		30	99
+3	3	1	62		31	98
+3	3	1	63		30	98
+3	3	1	64		31	97
+3	3	1	65		30	97
+3	3	1	66		31	96
+3	3	1	67		30	96
+3	3	2	0		29	95
+3	3	2	1		28	95
+3	3	2	2		29	94
+3	3	2	3		28	94
+3	3	2	4		29	93
+3	3	2	5		28	93
+3	3	2	6		29	92
+3	3	2	7		28	92
+3	3	2	8		29	91
+3	3	2	9		28	91
+3	3	2	10		29	90
+3	3	2	11		-1	-1
+3	3	2	12		28	90
+3	3	2	13		29	89
+3	3	2	14		28	89
+3	3	2	15		29	88
+3	3	2	16		28	88
+3	3	2	17		29	87
+3	3	2	18		28	87
+3	3	2	19		29	86
+3	3	2	20		28	86
+3	3	2	21		29	85
+3	3	2	22		-1	-1
+3	3	2	23		28	85
+3	3	2	24		29	84
+3	3	2	25		28	84
+3	3	2	26		29	83
+3	3	2	27		28	83
+3	3	2	28		29	82
+3	3	2	29		28	82
+3	3	2	30		29	81
+3	3	2	31		28	81
+3	3	2	32		29	80
+3	3	2	33		28	80
+3	3	2	34		29	79
+3	3	2	35		28	79
+3	3	2	36		29	78
+3	3	2	37		28	78
+3	3	2	38		29	77
+3	3	2	39		28	77
+3	3	2	40		29	76
+3	3	2	41		28	76
+3	3	2	42		29	75
+3	3	2	43		28	75
+3	3	2	44		29	74
+3	3	2	45		-1	-1
+3	3	2	46		28	74
+3	3	2	47		29	73
+3	3	2	48		28	73
+3	3	2	49		29	72
+3	3	2	50		28	72
+3	3	2	51		29	71
+3	3	2	52		28	71
+3	3	2	53		29	70
+3	3	2	54		28	70
+3	3	2	55		29	69
+3	3	2	56		-1	-1
+3	3	2	57		28	69
+3	3	2	58		29	68
+3	3	2	59		28	68
+3	3	2	60		29	67
+3	3	2	61		28	67
+3	3	2	62		29	66
+3	3	2	63		28	66
+3	3	2	64		29	65
+3	3	2	65		28	65
+3	3	2	66		29	64
+3	3	2	67		28	64
+3	3	3	0		29	127
+3	3	3	1		28	127
+3	3	3	2		29	126
+3	3	3	3		28	126
+3	3	3	4		29	125
+3	3	3	5		28	125
+3	3	3	6		29	124
+3	3	3	7		28	124
+3	3	3	8		29	123
+3	3	3	9		28	123
+3	3	3	10		29	122
+3	3	3	11		-1	-1
+3	3	3	12		28	122
+3	3	3	13		29	121
+3	3	3	14		28	121
+3	3	3	15		29	120
+3	3	3	16		28	120
+3	3	3	17		29	119
+3	3	3	18		28	119
+3	3	3	19		29	118
+3	3	3	20		28	118
+3	3	3	21		29	117
+3	3	3	22		-1	-1
+3	3	3	23		28	117
+3	3	3	24		29	116
+3	3	3	25		28	116
+3	3	3	26		29	115
+3	3	3	27		28	115
+3	3	3	28		29	114
+3	3	3	29		28	114
+3	3	3	30		29	113
+3	3	3	31		28	113
+3	3	3	32		29	112
+3	3	3	33		28	112
+3	3	3	34		29	111
+3	3	3	35		28	111
+3	3	3	36		29	110
+3	3	3	37		28	110
+3	3	3	38		29	109
+3	3	3	39		28	109
+3	3	3	40		29	108
+3	3	3	41		28	108
+3	3	3	42		29	107
+3	3	3	43		28	107
+3	3	3	44		29	106
+3	3	3	45		-1	-1
+3	3	3	46		28	106
+3	3	3	47		29	105
+3	3	3	48		28	105
+3	3	3	49		29	104
+3	3	3	50		28	104
+3	3	3	51		29	103
+3	3	3	52		28	103
+3	3	3	53		29	102
+3	3	3	54		28	102
+3	3	3	55		29	101
+3	3	3	56		-1	-1
+3	3	3	57		28	101
+3	3	3	58		29	100
+3	3	3	59		28	100
+3	3	3	60		29	99
+3	3	3	61		28	99
+3	3	3	62		29	98
+3	3	3	63		28	98
+3	3	3	64		29	97
+3	3	3	65		28	97
+3	3	3	66		29	96
+3	3	3	67		28	96
+4	0	0	0		32	32
+4	0	0	1		33	32
+4	0	0	2		32	33
+4	0	0	3		33	33
+4	0	0	4		32	34
+4	0	0	5		33	34
+4	0	0	6		32	35
+4	0	0	7		33	35
+4	0	0	8		32	36
+4	0	0	9		33	36
+4	0	0	10		32	37
+4	0	0	11		-1	-1
+4	0	0	12		33	37
+4	0	0	13		32	38
+4	0	0	14		33	38
+4	0	0	15		32	39
+4	0	0	16		33	39
+4	0	0	17		32	40
+4	0	0	18		33	40
+4	0	0	19		32	41
+4	0	0	20		33	41
+4	0	0	21		32	42
+4	0	0	22		-1	-1
+4	0	0	23		33	42
+4	0	0	24		32	43
+4	0	0	25		33	43
+4	0	0	26		32	44
+4	0	0	27		33	44
+4	0	0	28		32	45
+4	0	0	29		33	45
+4	0	0	30		32	46
+4	0	0	31		33	46
+4	0	0	32		32	47
+4	0	0	33		33	47
+4	0	0	34		32	48
+4	0	0	35		33	48
+4	0	0	36		32	49
+4	0	0	37		33	49
+4	0	0	38		32	50
+4	0	0	39		33	50
+4	0	0	40		32	51
+4	0	0	41		33	51
+4	0	0	42		32	52
+4	0	0	43		33	52
+4	0	0	44		32	53
+4	0	0	45		-1	-1
+4	0	0	46		33	53
+4	0	0	47		32	54
+4	0	0	48		33	54
+4	0	0	49		32	55
+4	0	0	50		33	55
+4	0	0	51		32	56
+4	0	0	52		33	56
+4	0	0	53		32	57
+4	0	0	54		33	57
+4	0	0	55		32	58
+4	0	0	56		-1	-1
+4	0	0	57		33	58
+4	0	0	58		32	59
+4	0	0	59		33	59
+4	0	0	60		32	60
+4	0	0	61		33	60
+4	0	0	62		32	61
+4	0	0	63		33	61
+4	0	0	64		32	62
+4	0	0	65		33	62
+4	0	0	66		32	63
+4	0	0	67		33	63
+4	0	1	0		32	0
+4	0	1	1		33	0
+4	0	1	2		32	1
+4	0	1	3		33	1
+4	0	1	4		32	2
+4	0	1	5		33	2
+4	0	1	6		32	3
+4	0	1	7		33	3
+4	0	1	8		32	4
+4	0	1	9		33	4
+4	0	1	10		32	5
+4	0	1	11		-1	-1
+4	0	1	12		33	5
+4	0	1	13		32	6
+4	0	1	14		33	6
+4	0	1	15		32	7
+4	0	1	16		33	7
+4	0	1	17		32	8
+4	0	1	18		33	8
+4	0	1	19		32	9
+4	0	1	20		33	9
+4	0	1	21		32	10
+4	0	1	22		-1	-1
+4	0	1	23		33	10
+4	0	1	24		32	11
+4	0	1	25		33	11
+4	0	1	26		32	12
+4	0	1	27		33	12
+4	0	1	28		32	13
+4	0	1	29		33	13
+4	0	1	30		32	14
+4	0	1	31		33	14
+4	0	1	32		32	15
+4	0	1	33		33	15
+4	0	1	34		32	16
+4	0	1	35		33	16
+4	0	1	36		32	17
+4	0	1	37		33	17
+4	0	1	38		32	18
+4	0	1	39		33	18
+4	0	1	40		32	19
+4	0	1	41		33	19
+4	0	1	42		32	20
+4	0	1	43		33	20
+4	0	1	44		32	21
+4	0	1	45		-1	-1
+4	0	1	46		33	21
+4	0	1	47		32	22
+4	0	1	48		33	22
+4	0	1	49		32	23
+4	0	1	50		33	23
+4	0	1	51		32	24
+4	0	1	52		33	24
+4	0	1	53		32	25
+4	0	1	54		33	25
+4	0	1	55		32	26
+4	0	1	56		-1	-1
+4	0	1	57		33	26
+4	0	1	58		32	27
+4	0	1	59		33	27
+4	0	1	60		32	28
+4	0	1	61		33	28
+4	0	1	62		32	29
+4	0	1	63		33	29
+4	0	1	64		32	30
+4	0	1	65		33	30
+4	0	1	66		32	31
+4	0	1	67		33	31
+4	0	2	0		34	32
+4	0	2	1		35	32
+4	0	2	2		34	33
+4	0	2	3		35	33
+4	0	2	4		34	34
+4	0	2	5		35	34
+4	0	2	6		34	35
+4	0	2	7		35	35
+4	0	2	8		34	36
+4	0	2	9		35	36
+4	0	2	10		34	37
+4	0	2	11		-1	-1
+4	0	2	12		35	37
+4	0	2	13		34	38
+4	0	2	14		35	38
+4	0	2	15		34	39
+4	0	2	16		35	39
+4	0	2	17		34	40
+4	0	2	18		35	40
+4	0	2	19		34	41
+4	0	2	20		35	41
+4	0	2	21		34	42
+4	0	2	22		-1	-1
+4	0	2	23		35	42
+4	0	2	24		34	43
+4	0	2	25		35	43
+4	0	2	26		34	44
+4	0	2	27		35	44
+4	0	2	28		34	45
+4	0	2	29		35	45
+4	0	2	30		34	46
+4	0	2	31		35	46
+4	0	2	32		34	47
+4	0	2	33		35	47
+4	0	2	34		34	48
+4	0	2	35		35	48
+4	0	2	36		34	49
+4	0	2	37		35	49
+4	0	2	38		34	50
+4	0	2	39		35	50
+4	0	2	40		34	51
+4	0	2	41		35	51
+4	0	2	42		34	52
+4	0	2	43		35	52
+4	0	2	44		34	53
+4	0	2	45		-1	-1
+4	0	2	46		35	53
+4	0	2	47		34	54
+4	0	2	48		35	54
+4	0	2	49		34	55
+4	0	2	50		35	55
+4	0	2	51		34	56
+4	0	2	52		35	56
+4	0	2	53		34	57
+4	0	2	54		35	57
+4	0	2	55		34	58
+4	0	2	56		-1	-1
+4	0	2	57		35	58
+4	0	2	58		34	59
+4	0	2	59		35	59
+4	0	2	60		34	60
+4	0	2	61		35	60
+4	0	2	62		34	61
+4	0	2	63		35	61
+4	0	2	64		34	62
+4	0	2	65		35	62
+4	0	2	66		34	63
+4	0	2	67		35	63
+4	0	3	0		34	0
+4	0	3	1		35	0
+4	0	3	2		34	1
+4	0	3	3		35	1
+4	0	3	4		34	2
+4	0	3	5		35	2
+4	0	3	6		34	3
+4	0	3	7		35	3
+4	0	3	8		34	4
+4	0	3	9		35	4
+4	0	3	10		34	5
+4	0	3	11		-1	-1
+4	0	3	12		35	5
+4	0	3	13		34	6
+4	0	3	14		35	6
+4	0	3	15		34	7
+4	0	3	16		35	7
+4	0	3	17		34	8
+4	0	3	18		35	8
+4	0	3	19		34	9
+4	0	3	20		35	9
+4	0	3	21		34	10
+4	0	3	22		-1	-1
+4	0	3	23		35	10
+4	0	3	24		34	11
+4	0	3	25		35	11
+4	0	3	26		34	12
+4	0	3	27		35	12
+4	0	3	28		34	13
+4	0	3	29		35	13
+4	0	3	30		34	14
+4	0	3	31		35	14
+4	0	3	32		34	15
+4	0	3	33		35	15
+4	0	3	34		34	16
+4	0	3	35		35	16
+4	0	3	36		34	17
+4	0	3	37		35	17
+4	0	3	38		34	18
+4	0	3	39		35	18
+4	0	3	40		34	19
+4	0	3	41		35	19
+4	0	3	42		34	20
+4	0	3	43		35	20
+4	0	3	44		34	21
+4	0	3	45		-1	-1
+4	0	3	46		35	21
+4	0	3	47		34	22
+4	0	3	48		35	22
+4	0	3	49		34	23
+4	0	3	50		35	23
+4	0	3	51		34	24
+4	0	3	52		35	24
+4	0	3	53		34	25
+4	0	3	54		35	25
+4	0	3	55		34	26
+4	0	3	56		-1	-1
+4	0	3	57		35	26
+4	0	3	58		34	27
+4	0	3	59		35	27
+4	0	3	60		34	28
+4	0	3	61		35	28
+4	0	3	62		34	29
+4	0	3	63		35	29
+4	0	3	64		34	30
+4	0	3	65		35	30
+4	0	3	66		34	31
+4	0	3	67		35	31
+4	1	0	0		35	95
+4	1	0	1		34	95
+4	1	0	2		35	94
+4	1	0	3		34	94
+4	1	0	4		35	93
+4	1	0	5		34	93
+4	1	0	6		35	92
+4	1	0	7		34	92
+4	1	0	8		35	91
+4	1	0	9		34	91
+4	1	0	10		35	90
+4	1	0	11		-1	-1
+4	1	0	12		34	90
+4	1	0	13		35	89
+4	1	0	14		34	89
+4	1	0	15		35	88
+4	1	0	16		34	88
+4	1	0	17		35	87
+4	1	0	18		34	87
+4	1	0	19		35	86
+4	1	0	20		34	86
+4	1	0	21		35	85
+4	1	0	22		-1	-1
+4	1	0	23		34	85
+4	1	0	24		35	84
+4	1	0	25		34	84
+4	1	0	26		35	83
+4	1	0	27		34	83
+4	1	0	28		35	82
+4	1	0	29		34	82
+4	1	0	30		35	81
+4	1	0	31		34	81
+4	1	0	32		35	80
+4	1	0	33		34	80
+4	1	0	34		35	79
+4	1	0	35		34	79
+4	1	0	36		35	78
+4	1	0	37		34	78
+4	1	0	38		35	77
+4	1	0	39		34	77
+4	1	0	40		35	76
+4	1	0	41		34	76
+4	1	0	42		35	75
+4	1	0	43		34	75
+4	1	0	44		35	74
+4	1	0	45		-1	-1
+4	1	0	46		34	74
+4	1	0	47		35	73
+4	1	0	48		34	73
+4	1	0	49		35	72
+4	1	0	50		34	72
+4	1	0	51		35	71
+4	1	0	52		34	71
+4	1	0	53		35	70
+4	1	0	54		34	70
+4	1	0	55		35	69
+4	1	0	56		-1	-1
+4	1	0	57		34	69
+4	1	0	58		35	68
+4	1	0	59		34	68
+4	1	0	60		35	67
+4	1	0	61		34	67
+4	1	0	62		35	66
+4	1	0	63		34	66
+4	1	0	64		35	65
+4	1	0	65		34	65
+4	1	0	66		35	64
+4	1	0	67		34	64
+4	1	1	0		35	127
+4	1	1	1		34	127
+4	1	1	2		35	126
+4	1	1	3		34	126
+4	1	1	4		35	125
+4	1	1	5		34	125
+4	1	1	6		35	124
+4	1	1	7		34	124
+4	1	1	8		35	123
+4	1	1	9		34	123
+4	1	1	10		35	122
+4	1	1	11		-1	-1
+4	1	1	12		34	122
+4	1	1	13		35	121
+4	1	1	14		34	121
+4	1	1	15		35	120
+4	1	1	16		34	120
+4	1	1	17		35	119
+4	1	1	18		34	119
+4	1	1	19		35	118
+4	1	1	20		34	118
+4	1	1	21		35	117
+4	1	1	22		-1	-1
+4	1	1	23		34	117
+4	1	1	24		35	116
+4	1	1	25		34	116
+4	1	1	26		35	115
+4	1	1	27		34	115
+4	1	1	28		35	114
+4	1	1	29		34	114
+4	1	1	30		35	113
+4	1	1	31		34	113
+4	1	1	32		35	112
+4	1	1	33		34	112
+4	1	1	34		35	111
+4	1	1	35		34	111
+4	1	1	36		35	110
+4	1	1	37		34	110
+4	1	1	38		35	109
+4	1	1	39		34	109
+4	1	1	40		35	108
+4	1	1	41		34	108
+4	1	1	42		35	107
+4	1	1	43		34	107
+4	1	1	44		35	106
+4	1	1	45		-1	-1
+4	1	1	46		34	106
+4	1	1	47		35	105
+4	1	1	48		34	105
+4	1	1	49		35	104
+4	1	1	50		34	104
+4	1	1	51		35	103
+4	1	1	52		34	103
+4	1	1	53		35	102
+4	1	1	54		34	102
+4	1	1	55		35	101
+4	1	1	56		-1	-1
+4	1	1	57		34	101
+4	1	1	58		35	100
+4	1	1	59		34	100
+4	1	1	60		35	99
+4	1	1	61		34	99
+4	1	1	62		35	98
+4	1	1	63		34	98
+4	1	1	64		35	97
+4	1	1	65		34	97
+4	1	1	66		35	96
+4	1	1	67		34	96
+4	1	2	0		33	95
+4	1	2	1		32	95
+4	1	2	2		33	94
+4	1	2	3		32	94
+4	1	2	4		33	93
+4	1	2	5		32	93
+4	1	2	6		33	92
+4	1	2	7		32	92
+4	1	2	8		33	91
+4	1	2	9		32	91
+4	1	2	10		33	90
+4	1	2	11		-1	-1
+4	1	2	12		32	90
+4	1	2	13		33	89
+4	1	2	14		32	89
+4	1	2	15		33	88
+4	1	2	16		32	88
+4	1	2	17		33	87
+4	1	2	18		32	87
+4	1	2	19		33	86
+4	1	2	20		32	86
+4	1	2	21		33	85
+4	1	2	22		-1	-1
+4	1	2	23		32	85
+4	1	2	24		33	84
+4	1	2	25		32	84
+4	1	2	26		33	83
+4	1	2	27		32	83
+4	1	2	28		33	82
+4	1	2	29		32	82
+4	1	2	30		33	81
+4	1	2	31		32	81
+4	1	2	32		33	80
+4	1	2	33		32	80
+4	1	2	34		33	79
+4	1	2	35		32	79
+4	1	2	36		33	78
+4	1	2	37		32	78
+4	1	2	38		33	77
+4	1	2	39		32	77
+4	1	2	40		33	76
+4	1	2	41		32	76
+4	1	2	42		33	75
+4	1	2	43		32	75
+4	1	2	44		33	74
+4	1	2	45		-1	-1
+4	1	2	46		32	74
+4	1	2	47		33	73
+4	1	2	48		32	73
+4	1	2	49		33	72
+4	1	2	50		32	72
+4	1	2	51		33	71
+4	1	2	52		32	71
+4	1	2	53		33	70
+4	1	2	54		32	70
+4	1	2	55		33	69
+4	1	2	56		-1	-1
+4	1	2	57		32	69
+4	1	2	58		33	68
+4	1	2	59		32	68
+4	1	2	60		33	67
+4	1	2	61		32	67
+4	1	2	62		33	66
+4	1	2	63		32	66
+4	1	2	64		33	65
+4	1	2	65		32	65
+4	1	2	66		33	64
+4	1	2	67		32	64
+4	1	3	0		33	127
+4	1	3	1		32	127
+4	1	3	2		33	126
+4	1	3	3		32	126
+4	1	3	4		33	125
+4	1	3	5		32	125
+4	1	3	6		33	124
+4	1	3	7		32	124
+4	1	3	8		33	123
+4	1	3	9		32	123
+4	1	3	10		33	122
+4	1	3	11		-1	-1
+4	1	3	12		32	122
+4	1	3	13		33	121
+4	1	3	14		32	121
+4	1	3	15		33	120
+4	1	3	16		32	120
+4	1	3	17		33	119
+4	1	3	18		32	119
+4	1	3	19		33	118
+4	1	3	20		32	118
+4	1	3	21		33	117
+4	1	3	22		-1	-1
+4	1	3	23		32	117
+4	1	3	24		33	116
+4	1	3	25		32	116
+4	1	3	26		33	115
+4	1	3	27		32	115
+4	1	3	28		33	114
+4	1	3	29		32	114
+4	1	3	30		33	113
+4	1	3	31		32	113
+4	1	3	32		33	112
+4	1	3	33		32	112
+4	1	3	34		33	111
+4	1	3	35		32	111
+4	1	3	36		33	110
+4	1	3	37		32	110
+4	1	3	38		33	109
+4	1	3	39		32	109
+4	1	3	40		33	108
+4	1	3	41		32	108
+4	1	3	42		33	107
+4	1	3	43		32	107
+4	1	3	44		33	106
+4	1	3	45		-1	-1
+4	1	3	46		32	106
+4	1	3	47		33	105
+4	1	3	48		32	105
+4	1	3	49		33	104
+4	1	3	50		32	104
+4	1	3	51		33	103
+4	1	3	52		32	103
+4	1	3	53		33	102
+4	1	3	54		32	102
+4	1	3	55		33	101
+4	1	3	56		-1	-1
+4	1	3	57		32	101
+4	1	3	58		33	100
+4	1	3	59		32	100
+4	1	3	60		33	99
+4	1	3	61		32	99
+4	1	3	62		33	98
+4	1	3	63		32	98
+4	1	3	64		33	97
+4	1	3	65		32	97
+4	1	3	66		33	96
+4	1	3	67		32	96
+4	2	0	0		36	32
+4	2	0	1		37	32
+4	2	0	2		36	33
+4	2	0	3		37	33
+4	2	0	4		36	34
+4	2	0	5		37	34
+4	2	0	6		36	35
+4	2	0	7		37	35
+4	2	0	8		36	36
+4	2	0	9		37	36
+4	2	0	10		36	37
+4	2	0	11		-1	-1
+4	2	0	12		37	37
+4	2	0	13		36	38
+4	2	0	14		37	38
+4	2	0	15		36	39
+4	2	0	16		37	39
+4	2	0	17		36	40
+4	2	0	18		37	40
+4	2	0	19		36	41
+4	2	0	20		37	41
+4	2	0	21		36	42
+4	2	0	22		-1	-1
+4	2	0	23		37	42
+4	2	0	24		36	43
+4	2	0	25		37	43
+4	2	0	26		36	44
+4	2	0	27		37	44
+4	2	0	28		36	45
+4	2	0	29		37	45
+4	2	0	30		36	46
+4	2	0	31		37	46
+4	2	0	32		36	47
+4	2	0	33		37	47
+4	2	0	34		36	48
+4	2	0	35		37	48
+4	2	0	36		36	49
+4	2	0	37		37	49
+4	2	0	38		36	50
+4	2	0	39		37	50
+4	2	0	40		36	51
+4	2	0	41		37	51
+4	2	0	42		36	52
+4	2	0	43		37	52
+4	2	0	44		36	53
+4	2	0	45		-1	-1
+4	2	0	46		37	53
+4	2	0	47		36	54
+4	2	0	48		37	54
+4	2	0	49		36	55
+4	2	0	50		37	55
+4	2	0	51		36	56
+4	2	0	52		37	56
+4	2	0	53		36	57
+4	2	0	54		37	57
+4	2	0	55		36	58
+4	2	0	56		-1	-1
+4	2	0	57		37	58
+4	2	0	58		36	59
+4	2	0	59		37	59
+4	2	0	60		36	60
+4	2	0	61		37	60
+4	2	0	62		36	61
+4	2	0	63		37	61
+4	2	0	64		36	62
+4	2	0	65		37	62
+4	2	0	66		36	63
+4	2	0	67		37	63
+4	2	1	0		36	0
+4	2	1	1		37	0
+4	2	1	2		36	1
+4	2	1	3		37	1
+4	2	1	4		36	2
+4	2	1	5		37	2
+4	2	1	6		36	3
+4	2	1	7		37	3
+4	2	1	8		36	4
+4	2	1	9		37	4
+4	2	1	10		36	5
+4	2	1	11		-1	-1
+4	2	1	12		37	5
+4	2	1	13		36	6
+4	2	1	14		37	6
+4	2	1	15		36	7
+4	2	1	16		37	7
+4	2	1	17		36	8
+4	2	1	18		37	8
+4	2	1	19		36	9
+4	2	1	20		37	9
+4	2	1	21		36	10
+4	2	1	22		-1	-1
+4	2	1	23		37	10
+4	2	1	24		36	11
+4	2	1	25		37	11
+4	2	1	26		36	12
+4	2	1	27		37	12
+4	2	1	28		36	13
+4	2	1	29		37	13
+4	2	1	30		36	14
+4	2	1	31		37	14
+4	2	1	32		36	15
+4	2	1	33		37	15
+4	2	1	34		36	16
+4	2	1	35		37	16
+4	2	1	36		36	17
+4	2	1	37		37	17
+4	2	1	38		36	18
+4	2	1	39		37	18
+4	2	1	40		36	19
+4	2	1	41		37	19
+4	2	1	42		36	20
+4	2	1	43		37	20
+4	2	1	44		36	21
+4	2	1	45		-1	-1
+4	2	1	46		37	21
+4	2	1	47		36	22
+4	2	1	48		37	22
+4	2	1	49		36	23
+4	2	1	50		37	23
+4	2	1	51		36	24
+4	2	1	52		37	24
+4	2	1	53		36	25
+4	2	1	54		37	25
+4	2	1	55		36	26
+4	2	1	56		-1	-1
+4	2	1	57		37	26
+4	2	1	58		36	27
+4	2	1	59		37	27
+4	2	1	60		36	28
+4	2	1	61		37	28
+4	2	1	62		36	29
+4	2	1	63		37	29
+4	2	1	64		36	30
+4	2	1	65		37	30
+4	2	1	66		36	31
+4	2	1	67		37	31
+4	2	2	0		38	32
+4	2	2	1		39	32
+4	2	2	2		38	33
+4	2	2	3		39	33
+4	2	2	4		38	34
+4	2	2	5		39	34
+4	2	2	6		38	35
+4	2	2	7		39	35
+4	2	2	8		38	36
+4	2	2	9		39	36
+4	2	2	10		38	37
+4	2	2	11		-1	-1
+4	2	2	12		39	37
+4	2	2	13		38	38
+4	2	2	14		39	38
+4	2	2	15		38	39
+4	2	2	16		39	39
+4	2	2	17		38	40
+4	2	2	18		39	40
+4	2	2	19		38	41
+4	2	2	20		39	41
+4	2	2	21		38	42
+4	2	2	22		-1	-1
+4	2	2	23		39	42
+4	2	2	24		38	43
+4	2	2	25		39	43
+4	2	2	26		38	44
+4	2	2	27		39	44
+4	2	2	28		38	45
+4	2	2	29		39	45
+4	2	2	30		38	46
+4	2	2	31		39	46
+4	2	2	32		38	47
+4	2	2	33		39	47
+4	2	2	34		38	48
+4	2	2	35		39	48
+4	2	2	36		38	49
+4	2	2	37		39	49
+4	2	2	38		38	50
+4	2	2	39		39	50
+4	2	2	40		38	51
+4	2	2	41		39	51
+4	2	2	42		38	52
+4	2	2	43		39	52
+4	2	2	44		38	53
+4	2	2	45		-1	-1
+4	2	2	46		39	53
+4	2	2	47		38	54
+4	2	2	48		39	54
+4	2	2	49		38	55
+4	2	2	50		39	55
+4	2	2	51		38	56
+4	2	2	52		39	56
+4	2	2	53		38	57
+4	2	2	54		39	57
+4	2	2	55		38	58
+4	2	2	56		-1	-1
+4	2	2	57		39	58
+4	2	2	58		38	59
+4	2	2	59		39	59
+4	2	2	60		38	60
+4	2	2	61		39	60
+4	2	2	62		38	61
+4	2	2	63		39	61
+4	2	2	64		38	62
+4	2	2	65		39	62
+4	2	2	66		38	63
+4	2	2	67		39	63
+4	2	3	0		38	0
+4	2	3	1		39	0
+4	2	3	2		38	1
+4	2	3	3		39	1
+4	2	3	4		38	2
+4	2	3	5		39	2
+4	2	3	6		38	3
+4	2	3	7		39	3
+4	2	3	8		38	4
+4	2	3	9		39	4
+4	2	3	10		38	5
+4	2	3	11		-1	-1
+4	2	3	12		39	5
+4	2	3	13		38	6
+4	2	3	14		39	6
+4	2	3	15		38	7
+4	2	3	16		39	7
+4	2	3	17		38	8
+4	2	3	18		39	8
+4	2	3	19		38	9
+4	2	3	20		39	9
+4	2	3	21		38	10
+4	2	3	22		-1	-1
+4	2	3	23		39	10
+4	2	3	24		38	11
+4	2	3	25		39	11
+4	2	3	26		38	12
+4	2	3	27		39	12
+4	2	3	28		38	13
+4	2	3	29		39	13
+4	2	3	30		38	14
+4	2	3	31		39	14
+4	2	3	32		38	15
+4	2	3	33		39	15
+4	2	3	34		38	16
+4	2	3	35		39	16
+4	2	3	36		38	17
+4	2	3	37		39	17
+4	2	3	38		38	18
+4	2	3	39		39	18
+4	2	3	40		38	19
+4	2	3	41		39	19
+4	2	3	42		38	20
+4	2	3	43		39	20
+4	2	3	44		38	21
+4	2	3	45		-1	-1
+4	2	3	46		39	21
+4	2	3	47		38	22
+4	2	3	48		39	22
+4	2	3	49		38	23
+4	2	3	50		39	23
+4	2	3	51		38	24
+4	2	3	52		39	24
+4	2	3	53		38	25
+4	2	3	54		39	25
+4	2	3	55		38	26
+4	2	3	56		-1	-1
+4	2	3	57		39	26
+4	2	3	58		38	27
+4	2	3	59		39	27
+4	2	3	60		38	28
+4	2	3	61		39	28
+4	2	3	62		38	29
+4	2	3	63		39	29
+4	2	3	64		38	30
+4	2	3	65		39	30
+4	2	3	66		38	31
+4	2	3	67		39	31
+4	3	0	0		39	95
+4	3	0	1		38	95
+4	3	0	2		39	94
+4	3	0	3		38	94
+4	3	0	4		39	93
+4	3	0	5		38	93
+4	3	0	6		39	92
+4	3	0	7		38	92
+4	3	0	8		39	91
+4	3	0	9		38	91
+4	3	0	10		39	90
+4	3	0	11		-1	-1
+4	3	0	12		38	90
+4	3	0	13		39	89
+4	3	0	14		38	89
+4	3	0	15		39	88
+4	3	0	16		38	88
+4	3	0	17		39	87
+4	3	0	18		38	87
+4	3	0	19		39	86
+4	3	0	20		38	86
+4	3	0	21		39	85
+4	3	0	22		-1	-1
+4	3	0	23		38	85
+4	3	0	24		39	84
+4	3	0	25		38	84
+4	3	0	26		39	83
+4	3	0	27		38	83
+4	3	0	28		39	82
+4	3	0	29		38	82
+4	3	0	30		39	81
+4	3	0	31		38	81
+4	3	0	32		39	80
+4	3	0	33		38	80
+4	3	0	34		39	79
+4	3	0	35		38	79
+4	3	0	36		39	78
+4	3	0	37		38	78
+4	3	0	38		39	77
+4	3	0	39		38	77
+4	3	0	40		39	76
+4	3	0	41		38	76
+4	3	0	42		39	75
+4	3	0	43		38	75
+4	3	0	44		39	74
+4	3	0	45		-1	-1
+4	3	0	46		38	74
+4	3	0	47		39	73
+4	3	0	48		38	73
+4	3	0	49		39	72
+4	3	0	50		38	72
+4	3	0	51		39	71
+4	3	0	52		38	71
+4	3	0	53		39	70
+4	3	0	54		38	70
+4	3	0	55		39	69
+4	3	0	56		-1	-1
+4	3	0	57		38	69
+4	3	0	58		39	68
+4	3	0	59		38	68
+4	3	0	60		39	67
+4	3	0	61		38	67
+4	3	0	62		39	66
+4	3	0	63		38	66
+4	3	0	64		39	65
+4	3	0	65		38	65
+4	3	0	66		39	64
+4	3	0	67		38	64
+4	3	1	0		39	127
+4	3	1	1		38	127
+4	3	1	2		39	126
+4	3	1	3		38	126
+4	3	1	4		39	125
+4	3	1	5		38	125
+4	3	1	6		39	124
+4	3	1	7		38	124
+4	3	1	8		39	123
+4	3	1	9		38	123
+4	3	1	10		39	122
+4	3	1	11		-1	-1
+4	3	1	12		38	122
+4	3	1	13		39	121
+4	3	1	14		38	121
+4	3	1	15		39	120
+4	3	1	16		38	120
+4	3	1	17		39	119
+4	3	1	18		38	119
+4	3	1	19		39	118
+4	3	1	20		38	118
+4	3	1	21		39	117
+4	3	1	22		-1	-1
+4	3	1	23		38	117
+4	3	1	24		39	116
+4	3	1	25		38	116
+4	3	1	26		39	115
+4	3	1	27		38	115
+4	3	1	28		39	114
+4	3	1	29		38	114
+4	3	1	30		39	113
+4	3	1	31		38	113
+4	3	1	32		39	112
+4	3	1	33		38	112
+4	3	1	34		39	111
+4	3	1	35		38	111
+4	3	1	36		39	110
+4	3	1	37		38	110
+4	3	1	38		39	109
+4	3	1	39		38	109
+4	3	1	40		39	108
+4	3	1	41		38	108
+4	3	1	42		39	107
+4	3	1	43		38	107
+4	3	1	44		39	106
+4	3	1	45		-1	-1
+4	3	1	46		38	106
+4	3	1	47		39	105
+4	3	1	48		38	105
+4	3	1	49		39	104
+4	3	1	50		38	104
+4	3	1	51		39	103
+4	3	1	52		38	103
+4	3	1	53		39	102
+4	3	1	54		38	102
+4	3	1	55		39	101
+4	3	1	56		-1	-1
+4	3	1	57		38	101
+4	3	1	58		39	100
+4	3	1	59		38	100
+4	3	1	60		39	99
+4	3	1	61		38	99
+4	3	1	62		39	98
+4	3	1	63		38	98
+4	3	1	64		39	97
+4	3	1	65		38	97
+4	3	1	66		39	96
+4	3	1	67		38	96
+4	3	2	0		37	95
+4	3	2	1		36	95
+4	3	2	2		37	94
+4	3	2	3		36	94
+4	3	2	4		37	93
+4	3	2	5		36	93
+4	3	2	6		37	92
+4	3	2	7		36	92
+4	3	2	8		37	91
+4	3	2	9		36	91
+4	3	2	10		37	90
+4	3	2	11		-1	-1
+4	3	2	12		36	90
+4	3	2	13		37	89
+4	3	2	14		36	89
+4	3	2	15		37	88
+4	3	2	16		36	88
+4	3	2	17		37	87
+4	3	2	18		36	87
+4	3	2	19		37	86
+4	3	2	20		36	86
+4	3	2	21		37	85
+4	3	2	22		-1	-1
+4	3	2	23		36	85
+4	3	2	24		37	84
+4	3	2	25		36	84
+4	3	2	26		37	83
+4	3	2	27		36	83
+4	3	2	28		37	82
+4	3	2	29		36	82
+4	3	2	30		37	81
+4	3	2	31		36	81
+4	3	2	32		37	80
+4	3	2	33		36	80
+4	3	2	34		37	79
+4	3	2	35		36	79
+4	3	2	36		37	78
+4	3	2	37		36	78
+4	3	2	38		37	77
+4	3	2	39		36	77
+4	3	2	40		37	76
+4	3	2	41		36	76
+4	3	2	42		37	75
+4	3	2	43		36	75
+4	3	2	44		37	74
+4	3	2	45		-1	-1
+4	3	2	46		36	74
+4	3	2	47		37	73
+4	3	2	48		36	73
+4	3	2	49		37	72
+4	3	2	50		36	72
+4	3	2	51		37	71
+4	3	2	52		36	71
+4	3	2	53		37	70
+4	3	2	54		36	70
+4	3	2	55		37	69
+4	3	2	56		-1	-1
+4	3	2	57		36	69
+4	3	2	58		37	68
+4	3	2	59		36	68
+4	3	2	60		37	67
+4	3	2	61		36	67
+4	3	2	62		37	66
+4	3	2	63		36	66
+4	3	2	64		37	65
+4	3	2	65		36	65
+4	3	2	66		37	64
+4	3	2	67		36	64
+4	3	3	0		37	127
+4	3	3	1		36	127
+4	3	3	2		37	126
+4	3	3	3		36	126
+4	3	3	4		37	125
+4	3	3	5		36	125
+4	3	3	6		37	124
+4	3	3	7		36	124
+4	3	3	8		37	123
+4	3	3	9		36	123
+4	3	3	10		37	122
+4	3	3	11		-1	-1
+4	3	3	12		36	122
+4	3	3	13		37	121
+4	3	3	14		36	121
+4	3	3	15		37	120
+4	3	3	16		36	120
+4	3	3	17		37	119
+4	3	3	18		36	119
+4	3	3	19		37	118
+4	3	3	20		36	118
+4	3	3	21		37	117
+4	3	3	22		-1	-1
+4	3	3	23		36	117
+4	3	3	24		37	116
+4	3	3	25		36	116
+4	3	3	26		37	115
+4	3	3	27		36	115
+4	3	3	28		37	114
+4	3	3	29		36	114
+4	3	3	30		37	113
+4	3	3	31		36	113
+4	3	3	32		37	112
+4	3	3	33		36	112
+4	3	3	34		37	111
+4	3	3	35		36	111
+4	3	3	36		37	110
+4	3	3	37		36	110
+4	3	3	38		37	109
+4	3	3	39		36	109
+4	3	3	40		37	108
+4	3	3	41		36	108
+4	3	3	42		37	107
+4	3	3	43		36	107
+4	3	3	44		37	106
+4	3	3	45		-1	-1
+4	3	3	46		36	106
+4	3	3	47		37	105
+4	3	3	48		36	105
+4	3	3	49		37	104
+4	3	3	50		36	104
+4	3	3	51		37	103
+4	3	3	52		36	103
+4	3	3	53		37	102
+4	3	3	54		36	102
+4	3	3	55		37	101
+4	3	3	56		-1	-1
+4	3	3	57		36	101
+4	3	3	58		37	100
+4	3	3	59		36	100
+4	3	3	60		37	99
+4	3	3	61		36	99
+4	3	3	62		37	98
+4	3	3	63		36	98
+4	3	3	64		37	97
+4	3	3	65		36	97
+4	3	3	66		37	96
+4	3	3	67		36	96
+5	0	0	0		40	32
+5	0	0	1		41	32
+5	0	0	2		40	33
+5	0	0	3		41	33
+5	0	0	4		40	34
+5	0	0	5		41	34
+5	0	0	6		40	35
+5	0	0	7		41	35
+5	0	0	8		40	36
+5	0	0	9		41	36
+5	0	0	10		40	37
+5	0	0	11		-1	-1
+5	0	0	12		41	37
+5	0	0	13		40	38
+5	0	0	14		41	38
+5	0	0	15		40	39
+5	0	0	16		41	39
+5	0	0	17		40	40
+5	0	0	18		41	40
+5	0	0	19		40	41
+5	0	0	20		41	41
+5	0	0	21		40	42
+5	0	0	22		-1	-1
+5	0	0	23		41	42
+5	0	0	24		40	43
+5	0	0	25		41	43
+5	0	0	26		40	44
+5	0	0	27		41	44
+5	0	0	28		40	45
+5	0	0	29		41	45
+5	0	0	30		40	46
+5	0	0	31		41	46
+5	0	0	32		40	47
+5	0	0	33		41	47
+5	0	0	34		40	48
+5	0	0	35		41	48
+5	0	0	36		40	49
+5	0	0	37		41	49
+5	0	0	38		40	50
+5	0	0	39		41	50
+5	0	0	40		40	51
+5	0	0	41		41	51
+5	0	0	42		40	52
+5	0	0	43		41	52
+5	0	0	44		40	53
+5	0	0	45		-1	-1
+5	0	0	46		41	53
+5	0	0	47		40	54
+5	0	0	48		41	54
+5	0	0	49		40	55
+5	0	0	50		41	55
+5	0	0	51		40	56
+5	0	0	52		41	56
+5	0	0	53		40	57
+5	0	0	54		41	57
+5	0	0	55		40	58
+5	0	0	56		-1	-1
+5	0	0	57		41	58
+5	0	0	58		40	59
+5	0	0	59		41	59
+5	0	0	60		40	60
+5	0	0	61		41	60
+5	0	0	62		40	61
+5	0	0	63		41	61
+5	0	0	64		40	62
+5	0	0	65		41	62
+5	0	0	66		40	63
+5	0	0	67		41	63
+5	0	1	0		40	0
+5	0	1	1		41	0
+5	0	1	2		40	1
+5	0	1	3		41	1
+5	0	1	4		40	2
+5	0	1	5		41	2
+5	0	1	6		40	3
+5	0	1	7		41	3
+5	0	1	8		40	4
+5	0	1	9		41	4
+5	0	1	10		40	5
+5	0	1	11		-1	-1
+5	0	1	12		41	5
+5	0	1	13		40	6
+5	0	1	14		41	6
+5	0	1	15		40	7
+5	0	1	16		41	7
+5	0	1	17		40	8
+5	0	1	18		41	8
+5	0	1	19		40	9
+5	0	1	20		41	9
+5	0	1	21		40	10
+5	0	1	22		-1	-1
+5	0	1	23		41	10
+5	0	1	24		40	11
+5	0	1	25		41	11
+5	0	1	26		40	12
+5	0	1	27		41	12
+5	0	1	28		40	13
+5	0	1	29		41	13
+5	0	1	30		40	14
+5	0	1	31		41	14
+5	0	1	32		40	15
+5	0	1	33		41	15
+5	0	1	34		40	16
+5	0	1	35		41	16
+5	0	1	36		40	17
+5	0	1	37		41	17
+5	0	1	38		40	18
+5	0	1	39		41	18
+5	0	1	40		40	19
+5	0	1	41		41	19
+5	0	1	42		40	20
+5	0	1	43		41	20
+5	0	1	44		40	21
+5	0	1	45		-1	-1
+5	0	1	46		41	21
+5	0	1	47		40	22
+5	0	1	48		41	22
+5	0	1	49		40	23
+5	0	1	50		41	23
+5	0	1	51		40	24
+5	0	1	52		41	24
+5	0	1	53		40	25
+5	0	1	54		41	25
+5	0	1	55		40	26
+5	0	1	56		-1	-1
+5	0	1	57		41	26
+5	0	1	58		40	27
+5	0	1	59		41	27
+5	0	1	60		40	28
+5	0	1	61		41	28
+5	0	1	62		40	29
+5	0	1	63		41	29
+5	0	1	64		40	30
+5	0	1	65		41	30
+5	0	1	66		40	31
+5	0	1	67		41	31
+5	0	2	0		42	32
+5	0	2	1		43	32
+5	0	2	2		42	33
+5	0	2	3		43	33
+5	0	2	4		42	34
+5	0	2	5		43	34
+5	0	2	6		42	35
+5	0	2	7		43	35
+5	0	2	8		42	36
+5	0	2	9		43	36
+5	0	2	10		42	37
+5	0	2	11		-1	-1
+5	0	2	12		43	37
+5	0	2	13		42	38
+5	0	2	14		43	38
+5	0	2	15		42	39
+5	0	2	16		43	39
+5	0	2	17		42	40
+5	0	2	18		43	40
+5	0	2	19		42	41
+5	0	2	20		43	41
+5	0	2	21		42	42
+5	0	2	22		-1	-1
+5	0	2	23		43	42
+5	0	2	24		42	43
+5	0	2	25		43	43
+5	0	2	26		42	44
+5	0	2	27		43	44
+5	0	2	28		42	45
+5	0	2	29		43	45
+5	0	2	30		42	46
+5	0	2	31		43	46
+5	0	2	32		42	47
+5	0	2	33		43	47
+5	0	2	34		42	48
+5	0	2	35		43	48
+5	0	2	36		42	49
+5	0	2	37		43	49
+5	0	2	38		42	50
+5	0	2	39		43	50
+5	0	2	40		42	51
+5	0	2	41		43	51
+5	0	2	42		42	52
+5	0	2	43		43	52
+5	0	2	44		42	53
+5	0	2	45		-1	-1
+5	0	2	46		43	53
+5	0	2	47		42	54
+5	0	2	48		43	54
+5	0	2	49		42	55
+5	0	2	50		43	55
+5	0	2	51		42	56
+5	0	2	52		43	56
+5	0	2	53		42	57
+5	0	2	54		43	57
+5	0	2	55		42	58
+5	0	2	56		-1	-1
+5	0	2	57		43	58
+5	0	2	58		42	59
+5	0	2	59		43	59
+5	0	2	60		42	60
+5	0	2	61		43	60
+5	0	2	62		42	61
+5	0	2	63		43	61
+5	0	2	64		42	62
+5	0	2	65		43	62
+5	0	2	66		42	63
+5	0	2	67		43	63
+5	0	3	0		42	0
+5	0	3	1		43	0
+5	0	3	2		42	1
+5	0	3	3		43	1
+5	0	3	4		42	2
+5	0	3	5		43	2
+5	0	3	6		42	3
+5	0	3	7		43	3
+5	0	3	8		42	4
+5	0	3	9		43	4
+5	0	3	10		42	5
+5	0	3	11		-1	-1
+5	0	3	12		43	5
+5	0	3	13		42	6
+5	0	3	14		43	6
+5	0	3	15		42	7
+5	0	3	16		43	7
+5	0	3	17		42	8
+5	0	3	18		43	8
+5	0	3	19		42	9
+5	0	3	20		43	9
+5	0	3	21		42	10
+5	0	3	22		-1	-1
+5	0	3	23		43	10
+5	0	3	24		42	11
+5	0	3	25		43	11
+5	0	3	26		42	12
+5	0	3	27		43	12
+5	0	3	28		42	13
+5	0	3	29		43	13
+5	0	3	30		42	14
+5	0	3	31		43	14
+5	0	3	32		42	15
+5	0	3	33		43	15
+5	0	3	34		42	16
+5	0	3	35		43	16
+5	0	3	36		42	17
+5	0	3	37		43	17
+5	0	3	38		42	18
+5	0	3	39		43	18
+5	0	3	40		42	19
+5	0	3	41		43	19
+5	0	3	42		42	20
+5	0	3	43		43	20
+5	0	3	44		42	21
+5	0	3	45		-1	-1
+5	0	3	46		43	21
+5	0	3	47		42	22
+5	0	3	48		43	22
+5	0	3	49		42	23
+5	0	3	50		43	23
+5	0	3	51		42	24
+5	0	3	52		43	24
+5	0	3	53		42	25
+5	0	3	54		43	25
+5	0	3	55		42	26
+5	0	3	56		-1	-1
+5	0	3	57		43	26
+5	0	3	58		42	27
+5	0	3	59		43	27
+5	0	3	60		42	28
+5	0	3	61		43	28
+5	0	3	62		42	29
+5	0	3	63		43	29
+5	0	3	64		42	30
+5	0	3	65		43	30
+5	0	3	66		42	31
+5	0	3	67		43	31
+5	1	0	0		43	95
+5	1	0	1		42	95
+5	1	0	2		43	94
+5	1	0	3		42	94
+5	1	0	4		43	93
+5	1	0	5		42	93
+5	1	0	6		43	92
+5	1	0	7		42	92
+5	1	0	8		43	91
+5	1	0	9		42	91
+5	1	0	10		43	90
+5	1	0	11		-1	-1
+5	1	0	12		42	90
+5	1	0	13		43	89
+5	1	0	14		42	89
+5	1	0	15		43	88
+5	1	0	16		42	88
+5	1	0	17		43	87
+5	1	0	18		42	87
+5	1	0	19		43	86
+5	1	0	20		42	86
+5	1	0	21		43	85
+5	1	0	22		-1	-1
+5	1	0	23		42	85
+5	1	0	24		43	84
+5	1	0	25		42	84
+5	1	0	26		43	83
+5	1	0	27		42	83
+5	1	0	28		43	82
+5	1	0	29		42	82
+5	1	0	30		43	81
+5	1	0	31		42	81
+5	1	0	32		43	80
+5	1	0	33		42	80
+5	1	0	34		43	79
+5	1	0	35		42	79
+5	1	0	36		43	78
+5	1	0	37		42	78
+5	1	0	38		43	77
+5	1	0	39		42	77
+5	1	0	40		43	76
+5	1	0	41		42	76
+5	1	0	42		43	75
+5	1	0	43		42	75
+5	1	0	44		43	74
+5	1	0	45		-1	-1
+5	1	0	46		42	74
+5	1	0	47		43	73
+5	1	0	48		42	73
+5	1	0	49		43	72
+5	1	0	50		42	72
+5	1	0	51		43	71
+5	1	0	52		42	71
+5	1	0	53		43	70
+5	1	0	54		42	70
+5	1	0	55		43	69
+5	1	0	56		-1	-1
+5	1	0	57		42	69
+5	1	0	58		43	68
+5	1	0	59		42	68
+5	1	0	60		43	67
+5	1	0	61		42	67
+5	1	0	62		43	66
+5	1	0	63		42	66
+5	1	0	64		43	65
+5	1	0	65		42	65
+5	1	0	66		43	64
+5	1	0	67		42	64
+5	1	1	0		43	127
+5	1	1	1		42	127
+5	1	1	2		43	126
+5	1	1	3		42	126
+5	1	1	4		43	125
+5	1	1	5		42	125
+5	1	1	6		43	124
+5	1	1	7		42	124
+5	1	1	8		43	123
+5	1	1	9		42	123
+5	1	1	10		43	122
+5	1	1	11		-1	-1
+5	1	1	12		42	122
+5	1	1	13		43	121
+5	1	1	14		42	121
+5	1	1	15		43	120
+5	1	1	16		42	120
+5	1	1	17		43	119
+5	1	1	18		42	119
+5	1	1	19		43	118
+5	1	1	20		42	118
+5	1	1	21		43	117
+5	1	1	22		-1	-1
+5	1	1	23		42	117
+5	1	1	24		43	116
+5	1	1	25		42	116
+5	1	1	26		43	115
+5	1	1	27		42	115
+5	1	1	28		43	114
+5	1	1	29		42	114
+5	1	1	30		43	113
+5	1	1	31		42	113
+5	1	1	32		43	112
+5	1	1	33		42	112
+5	1	1	34		43	111
+5	1	1	35		42	111
+5	1	1	36		43	110
+5	1	1	37		42	110
+5	1	1	38		43	109
+5	1	1	39		42	109
+5	1	1	40		43	108
+5	1	1	41		42	108
+5	1	1	42		43	107
+5	1	1	43		42	107
+5	1	1	44		43	106
+5	1	1	45		-1	-1
+5	1	1	46		42	106
+5	1	1	47		43	105
+5	1	1	48		42	105
+5	1	1	49		43	104
+5	1	1	50		42	104
+5	1	1	51		43	103
+5	1	1	52		42	103
+5	1	1	53		43	102
+5	1	1	54		42	102
+5	1	1	55		43	101
+5	1	1	56		-1	-1
+5	1	1	57		42	101
+5	1	1	58		43	100
+5	1	1	59		42	100
+5	1	1	60		43	99
+5	1	1	61		42	99
+5	1	1	62		43	98
+5	1	1	63		42	98
+5	1	1	64		43	97
+5	1	1	65		42	97
+5	1	1	66		43	96
+5	1	1	67		42	96
+5	1	2	0		41	95
+5	1	2	1		40	95
+5	1	2	2		41	94
+5	1	2	3		40	94
+5	1	2	4		41	93
+5	1	2	5		40	93
+5	1	2	6		41	92
+5	1	2	7		40	92
+5	1	2	8		41	91
+5	1	2	9		40	91
+5	1	2	10		41	90
+5	1	2	11		-1	-1
+5	1	2	12		40	90
+5	1	2	13		41	89
+5	1	2	14		40	89
+5	1	2	15		41	88
+5	1	2	16		40	88
+5	1	2	17		41	87
+5	1	2	18		40	87
+5	1	2	19		41	86
+5	1	2	20		40	86
+5	1	2	21		41	85
+5	1	2	22		-1	-1
+5	1	2	23		40	85
+5	1	2	24		41	84
+5	1	2	25		40	84
+5	1	2	26		41	83
+5	1	2	27		40	83
+5	1	2	28		41	82
+5	1	2	29		40	82
+5	1	2	30		41	81
+5	1	2	31		40	81
+5	1	2	32		41	80
+5	1	2	33		40	80
+5	1	2	34		41	79
+5	1	2	35		40	79
+5	1	2	36		41	78
+5	1	2	37		40	78
+5	1	2	38		41	77
+5	1	2	39		40	77
+5	1	2	40		41	76
+5	1	2	41		40	76
+5	1	2	42		41	75
+5	1	2	43		40	75
+5	1	2	44		41	74
+5	1	2	45		-1	-1
+5	1	2	46		40	74
+5	1	2	47		41	73
+5	1	2	48		40	73
+5	1	2	49		41	72
+5	1	2	50		40	72
+5	1	2	51		41	71
+5	1	2	52		40	71
+5	1	2	53		41	70
+5	1	2	54		40	70
+5	1	2	55		41	69
+5	1	2	56		-1	-1
+5	1	2	57		40	69
+5	1	2	58		41	68
+5	1	2	59		40	68
+5	1	2	60		41	67
+5	1	2	61		40	67
+5	1	2	62		41	66
+5	1	2	63		40	66
+5	1	2	64		41	65
+5	1	2	65		40	65
+5	1	2	66		41	64
+5	1	2	67		40	64
+5	1	3	0		41	127
+5	1	3	1		40	127
+5	1	3	2		41	126
+5	1	3	3		40	126
+5	1	3	4		41	125
+5	1	3	5		40	125
+5	1	3	6		41	124
+5	1	3	7		40	124
+5	1	3	8		41	123
+5	1	3	9		40	123
+5	1	3	10		41	122
+5	1	3	11		-1	-1
+5	1	3	12		40	122
+5	1	3	13		41	121
+5	1	3	14		40	121
+5	1	3	15		41	120
+5	1	3	16		40	120
+5	1	3	17		41	119
+5	1	3	18		40	119
+5	1	3	19		41	118
+5	1	3	20		40	118
+5	1	3	21		41	117
+5	1	3	22		-1	-1
+5	1	3	23		40	117
+5	1	3	24		41	116
+5	1	3	25		40	116
+5	1	3	26		41	115
+5	1	3	27		40	115
+5	1	3	28		41	114
+5	1	3	29		40	114
+5	1	3	30		41	113
+5	1	3	31		40	113
+5	1	3	32		41	112
+5	1	3	33		40	112
+5	1	3	34		41	111
+5	1	3	35		40	111
+5	1	3	36		41	110
+5	1	3	37		40	110
+5	1	3	38		41	109
+5	1	3	39		40	109
+5	1	3	40		41	108
+5	1	3	41		40	108
+5	1	3	42		41	107
+5	1	3	43		40	107
+5	1	3	44		41	106
+5	1	3	45		-1	-1
+5	1	3	46		40	106
+5	1	3	47		41	105
+5	1	3	48		40	105
+5	1	3	49		41	104
+5	1	3	50		40	104
+5	1	3	51		41	103
+5	1	3	52		40	103
+5	1	3	53		41	102
+5	1	3	54		40	102
+5	1	3	55		41	101
+5	1	3	56		-1	-1
+5	1	3	57		40	101
+5	1	3	58		41	100
+5	1	3	59		40	100
+5	1	3	60		41	99
+5	1	3	61		40	99
+5	1	3	62		41	98
+5	1	3	63		40	98
+5	1	3	64		41	97
+5	1	3	65		40	97
+5	1	3	66		41	96
+5	1	3	67		40	96
+5	2	0	0		44	32
+5	2	0	1		45	32
+5	2	0	2		44	33
+5	2	0	3		45	33
+5	2	0	4		44	34
+5	2	0	5		45	34
+5	2	0	6		44	35
+5	2	0	7		45	35
+5	2	0	8		44	36
+5	2	0	9		45	36
+5	2	0	10		44	37
+5	2	0	11		-1	-1
+5	2	0	12		45	37
+5	2	0	13		44	38
+5	2	0	14		45	38
+5	2	0	15		44	39
+5	2	0	16		45	39
+5	2	0	17		44	40
+5	2	0	18		45	40
+5	2	0	19		44	41
+5	2	0	20		45	41
+5	2	0	21		44	42
+5	2	0	22		-1	-1
+5	2	0	23		45	42
+5	2	0	24		44	43
+5	2	0	25		45	43
+5	2	0	26		44	44
+5	2	0	27		45	44
+5	2	0	28		44	45
+5	2	0	29		45	45
+5	2	0	30		44	46
+5	2	0	31		45	46
+5	2	0	32		44	47
+5	2	0	33		45	47
+5	2	0	34		44	48
+5	2	0	35		45	48
+5	2	0	36		44	49
+5	2	0	37		45	49
+5	2	0	38		44	50
+5	2	0	39		45	50
+5	2	0	40		44	51
+5	2	0	41		45	51
+5	2	0	42		44	52
+5	2	0	43		45	52
+5	2	0	44		44	53
+5	2	0	45		-1	-1
+5	2	0	46		45	53
+5	2	0	47		44	54
+5	2	0	48		45	54
+5	2	0	49		44	55
+5	2	0	50		45	55
+5	2	0	51		44	56
+5	2	0	52		45	56
+5	2	0	53		44	57
+5	2	0	54		45	57
+5	2	0	55		44	58
+5	2	0	56		-1	-1
+5	2	0	57		45	58
+5	2	0	58		44	59
+5	2	0	59		45	59
+5	2	0	60		44	60
+5	2	0	61		45	60
+5	2	0	62		44	61
+5	2	0	63		45	61
+5	2	0	64		44	62
+5	2	0	65		45	62
+5	2	0	66		44	63
+5	2	0	67		45	63
+5	2	1	0		44	0
+5	2	1	1		45	0
+5	2	1	2		44	1
+5	2	1	3		45	1
+5	2	1	4		44	2
+5	2	1	5		45	2
+5	2	1	6		44	3
+5	2	1	7		45	3
+5	2	1	8		44	4
+5	2	1	9		45	4
+5	2	1	10		44	5
+5	2	1	11		-1	-1
+5	2	1	12		45	5
+5	2	1	13		44	6
+5	2	1	14		45	6
+5	2	1	15		44	7
+5	2	1	16		45	7
+5	2	1	17		44	8
+5	2	1	18		45	8
+5	2	1	19		44	9
+5	2	1	20		45	9
+5	2	1	21		44	10
+5	2	1	22		-1	-1
+5	2	1	23		45	10
+5	2	1	24		44	11
+5	2	1	25		45	11
+5	2	1	26		44	12
+5	2	1	27		45	12
+5	2	1	28		44	13
+5	2	1	29		45	13
+5	2	1	30		44	14
+5	2	1	31		45	14
+5	2	1	32		44	15
+5	2	1	33		45	15
+5	2	1	34		44	16
+5	2	1	35		45	16
+5	2	1	36		44	17
+5	2	1	37		45	17
+5	2	1	38		44	18
+5	2	1	39		45	18
+5	2	1	40		44	19
+5	2	1	41		45	19
+5	2	1	42		44	20
+5	2	1	43		45	20
+5	2	1	44		44	21
+5	2	1	45		-1	-1
+5	2	1	46		45	21
+5	2	1	47		44	22
+5	2	1	48		45	22
+5	2	1	49		44	23
+5	2	1	50		45	23
+5	2	1	51		44	24
+5	2	1	52		45	24
+5	2	1	53		44	25
+5	2	1	54		45	25
+5	2	1	55		44	26
+5	2	1	56		-1	-1
+5	2	1	57		45	26
+5	2	1	58		44	27
+5	2	1	59		45	27
+5	2	1	60		44	28
+5	2	1	61		45	28
+5	2	1	62		44	29
+5	2	1	63		45	29
+5	2	1	64		44	30
+5	2	1	65		45	30
+5	2	1	66		44	31
+5	2	1	67		45	31
+5	2	2	0		46	32
+5	2	2	1		47	32
+5	2	2	2		46	33
+5	2	2	3		47	33
+5	2	2	4		46	34
+5	2	2	5		47	34
+5	2	2	6		46	35
+5	2	2	7		47	35
+5	2	2	8		46	36
+5	2	2	9		47	36
+5	2	2	10		46	37
+5	2	2	11		-1	-1
+5	2	2	12		47	37
+5	2	2	13		46	38
+5	2	2	14		47	38
+5	2	2	15		46	39
+5	2	2	16		47	39
+5	2	2	17		46	40
+5	2	2	18		47	40
+5	2	2	19		46	41
+5	2	2	20		47	41
+5	2	2	21		46	42
+5	2	2	22		-1	-1
+5	2	2	23		47	42
+5	2	2	24		46	43
+5	2	2	25		47	43
+5	2	2	26		46	44
+5	2	2	27		47	44
+5	2	2	28		46	45
+5	2	2	29		47	45
+5	2	2	30		46	46
+5	2	2	31		47	46
+5	2	2	32		46	47
+5	2	2	33		47	47
+5	2	2	34		46	48
+5	2	2	35		47	48
+5	2	2	36		46	49
+5	2	2	37		47	49
+5	2	2	38		46	50
+5	2	2	39		47	50
+5	2	2	40		46	51
+5	2	2	41		47	51
+5	2	2	42		46	52
+5	2	2	43		47	52
+5	2	2	44		46	53
+5	2	2	45		-1	-1
+5	2	2	46		47	53
+5	2	2	47		46	54
+5	2	2	48		47	54
+5	2	2	49		46	55
+5	2	2	50		47	55
+5	2	2	51		46	56
+5	2	2	52		47	56
+5	2	2	53		46	57
+5	2	2	54		47	57
+5	2	2	55		46	58
+5	2	2	56		-1	-1
+5	2	2	57		47	58
+5	2	2	58		46	59
+5	2	2	59		47	59
+5	2	2	60		46	60
+5	2	2	61		47	60
+5	2	2	62		46	61
+5	2	2	63		47	61
+5	2	2	64		46	62
+5	2	2	65		47	62
+5	2	2	66		46	63
+5	2	2	67		47	63
+5	2	3	0		46	0
+5	2	3	1		47	0
+5	2	3	2		46	1
+5	2	3	3		47	1
+5	2	3	4		46	2
+5	2	3	5		47	2
+5	2	3	6		46	3
+5	2	3	7		47	3
+5	2	3	8		46	4
+5	2	3	9		47	4
+5	2	3	10		46	5
+5	2	3	11		-1	-1
+5	2	3	12		47	5
+5	2	3	13		46	6
+5	2	3	14		47	6
+5	2	3	15		46	7
+5	2	3	16		47	7
+5	2	3	17		46	8
+5	2	3	18		47	8
+5	2	3	19		46	9
+5	2	3	20		47	9
+5	2	3	21		46	10
+5	2	3	22		-1	-1
+5	2	3	23		47	10
+5	2	3	24		46	11
+5	2	3	25		47	11
+5	2	3	26		46	12
+5	2	3	27		47	12
+5	2	3	28		46	13
+5	2	3	29		47	13
+5	2	3	30		46	14
+5	2	3	31		47	14
+5	2	3	32		46	15
+5	2	3	33		47	15
+5	2	3	34		46	16
+5	2	3	35		47	16
+5	2	3	36		46	17
+5	2	3	37		47	17
+5	2	3	38		46	18
+5	2	3	39		47	18
+5	2	3	40		46	19
+5	2	3	41		47	19
+5	2	3	42		46	20
+5	2	3	43		47	20
+5	2	3	44		46	21
+5	2	3	45		-1	-1
+5	2	3	46		47	21
+5	2	3	47		46	22
+5	2	3	48		47	22
+5	2	3	49		46	23
+5	2	3	50		47	23
+5	2	3	51		46	24
+5	2	3	52		47	24
+5	2	3	53		46	25
+5	2	3	54		47	25
+5	2	3	55		46	26
+5	2	3	56		-1	-1
+5	2	3	57		47	26
+5	2	3	58		46	27
+5	2	3	59		47	27
+5	2	3	60		46	28
+5	2	3	61		47	28
+5	2	3	62		46	29
+5	2	3	63		47	29
+5	2	3	64		46	30
+5	2	3	65		47	30
+5	2	3	66		46	31
+5	2	3	67		47	31
+5	3	0	0		47	95
+5	3	0	1		46	95
+5	3	0	2		47	94
+5	3	0	3		46	94
+5	3	0	4		47	93
+5	3	0	5		46	93
+5	3	0	6		47	92
+5	3	0	7		46	92
+5	3	0	8		47	91
+5	3	0	9		46	91
+5	3	0	10		47	90
+5	3	0	11		-1	-1
+5	3	0	12		46	90
+5	3	0	13		47	89
+5	3	0	14		46	89
+5	3	0	15		47	88
+5	3	0	16		46	88
+5	3	0	17		47	87
+5	3	0	18		46	87
+5	3	0	19		47	86
+5	3	0	20		46	86
+5	3	0	21		47	85
+5	3	0	22		-1	-1
+5	3	0	23		46	85
+5	3	0	24		47	84
+5	3	0	25		46	84
+5	3	0	26		47	83
+5	3	0	27		46	83
+5	3	0	28		47	82
+5	3	0	29		46	82
+5	3	0	30		47	81
+5	3	0	31		46	81
+5	3	0	32		47	80
+5	3	0	33		46	80
+5	3	0	34		47	79
+5	3	0	35		46	79
+5	3	0	36		47	78
+5	3	0	37		46	78
+5	3	0	38		47	77
+5	3	0	39		46	77
+5	3	0	40		47	76
+5	3	0	41		46	76
+5	3	0	42		47	75
+5	3	0	43		46	75
+5	3	0	44		47	74
+5	3	0	45		-1	-1
+5	3	0	46		46	74
+5	3	0	47		47	73
+5	3	0	48		46	73
+5	3	0	49		47	72
+5	3	0	50		46	72
+5	3	0	51		47	71
+5	3	0	52		46	71
+5	3	0	53		47	70
+5	3	0	54		46	70
+5	3	0	55		47	69
+5	3	0	56		-1	-1
+5	3	0	57		46	69
+5	3	0	58		47	68
+5	3	0	59		46	68
+5	3	0	60		47	67
+5	3	0	61		46	67
+5	3	0	62		47	66
+5	3	0	63		46	66
+5	3	0	64		47	65
+5	3	0	65		46	65
+5	3	0	66		47	64
+5	3	0	67		46	64
+5	3	1	0		47	127
+5	3	1	1		46	127
+5	3	1	2		47	126
+5	3	1	3		46	126
+5	3	1	4		47	125
+5	3	1	5		46	125
+5	3	1	6		47	124
+5	3	1	7		46	124
+5	3	1	8		47	123
+5	3	1	9		46	123
+5	3	1	10		47	122
+5	3	1	11		-1	-1
+5	3	1	12		46	122
+5	3	1	13		47	121
+5	3	1	14		46	121
+5	3	1	15		47	120
+5	3	1	16		46	120
+5	3	1	17		47	119
+5	3	1	18		46	119
+5	3	1	19		47	118
+5	3	1	20		46	118
+5	3	1	21		47	117
+5	3	1	22		-1	-1
+5	3	1	23		46	117
+5	3	1	24		47	116
+5	3	1	25		46	116
+5	3	1	26		47	115
+5	3	1	27		46	115
+5	3	1	28		47	114
+5	3	1	29		46	114
+5	3	1	30		47	113
+5	3	1	31		46	113
+5	3	1	32		47	112
+5	3	1	33		46	112
+5	3	1	34		47	111
+5	3	1	35		46	111
+5	3	1	36		47	110
+5	3	1	37		46	110
+5	3	1	38		47	109
+5	3	1	39		46	109
+5	3	1	40		47	108
+5	3	1	41		46	108
+5	3	1	42		47	107
+5	3	1	43		46	107
+5	3	1	44		47	106
+5	3	1	45		-1	-1
+5	3	1	46		46	106
+5	3	1	47		47	105
+5	3	1	48		46	105
+5	3	1	49		47	104
+5	3	1	50		46	104
+5	3	1	51		47	103
+5	3	1	52		46	103
+5	3	1	53		47	102
+5	3	1	54		46	102
+5	3	1	55		47	101
+5	3	1	56		-1	-1
+5	3	1	57		46	101
+5	3	1	58		47	100
+5	3	1	59		46	100
+5	3	1	60		47	99
+5	3	1	61		46	99
+5	3	1	62		47	98
+5	3	1	63		46	98
+5	3	1	64		47	97
+5	3	1	65		46	97
+5	3	1	66		47	96
+5	3	1	67		46	96
+5	3	2	0		45	95
+5	3	2	1		44	95
+5	3	2	2		45	94
+5	3	2	3		44	94
+5	3	2	4		45	93
+5	3	2	5		44	93
+5	3	2	6		45	92
+5	3	2	7		44	92
+5	3	2	8		45	91
+5	3	2	9		44	91
+5	3	2	10		45	90
+5	3	2	11		-1	-1
+5	3	2	12		44	90
+5	3	2	13		45	89
+5	3	2	14		44	89
+5	3	2	15		45	88
+5	3	2	16		44	88
+5	3	2	17		45	87
+5	3	2	18		44	87
+5	3	2	19		45	86
+5	3	2	20		44	86
+5	3	2	21		45	85
+5	3	2	22		-1	-1
+5	3	2	23		44	85
+5	3	2	24		45	84
+5	3	2	25		44	84
+5	3	2	26		45	83
+5	3	2	27		44	83
+5	3	2	28		45	82
+5	3	2	29		44	82
+5	3	2	30		45	81
+5	3	2	31		44	81
+5	3	2	32		45	80
+5	3	2	33		44	80
+5	3	2	34		45	79
+5	3	2	35		44	79
+5	3	2	36		45	78
+5	3	2	37		44	78
+5	3	2	38		45	77
+5	3	2	39		44	77
+5	3	2	40		45	76
+5	3	2	41		44	76
+5	3	2	42		45	75
+5	3	2	43		44	75
+5	3	2	44		45	74
+5	3	2	45		-1	-1
+5	3	2	46		44	74
+5	3	2	47		45	73
+5	3	2	48		44	73
+5	3	2	49		45	72
+5	3	2	50		44	72
+5	3	2	51		45	71
+5	3	2	52		44	71
+5	3	2	53		45	70
+5	3	2	54		44	70
+5	3	2	55		45	69
+5	3	2	56		-1	-1
+5	3	2	57		44	69
+5	3	2	58		45	68
+5	3	2	59		44	68
+5	3	2	60		45	67
+5	3	2	61		44	67
+5	3	2	62		45	66
+5	3	2	63		44	66
+5	3	2	64		45	65
+5	3	2	65		44	65
+5	3	2	66		45	64
+5	3	2	67		44	64
+5	3	3	0		45	127
+5	3	3	1		44	127
+5	3	3	2		45	126
+5	3	3	3		44	126
+5	3	3	4		45	125
+5	3	3	5		44	125
+5	3	3	6		45	124
+5	3	3	7		44	124
+5	3	3	8		45	123
+5	3	3	9		44	123
+5	3	3	10		45	122
+5	3	3	11		-1	-1
+5	3	3	12		44	122
+5	3	3	13		45	121
+5	3	3	14		44	121
+5	3	3	15		45	120
+5	3	3	16		44	120
+5	3	3	17		45	119
+5	3	3	18		44	119
+5	3	3	19		45	118
+5	3	3	20		44	118
+5	3	3	21		45	117
+5	3	3	22		-1	-1
+5	3	3	23		44	117
+5	3	3	24		45	116
+5	3	3	25		44	116
+5	3	3	26		45	115
+5	3	3	27		44	115
+5	3	3	28		45	114
+5	3	3	29		44	114
+5	3	3	30		45	113
+5	3	3	31		44	113
+5	3	3	32		45	112
+5	3	3	33		44	112
+5	3	3	34		45	111
+5	3	3	35		44	111
+5	3	3	36		45	110
+5	3	3	37		44	110
+5	3	3	38		45	109
+5	3	3	39		44	109
+5	3	3	40		45	108
+5	3	3	41		44	108
+5	3	3	42		45	107
+5	3	3	43		44	107
+5	3	3	44		45	106
+5	3	3	45		-1	-1
+5	3	3	46		44	106
+5	3	3	47		45	105
+5	3	3	48		44	105
+5	3	3	49		45	104
+5	3	3	50		44	104
+5	3	3	51		45	103
+5	3	3	52		44	103
+5	3	3	53		45	102
+5	3	3	54		44	102
+5	3	3	55		45	101
+5	3	3	56		-1	-1
+5	3	3	57		44	101
+5	3	3	58		45	100
+5	3	3	59		44	100
+5	3	3	60		45	99
+5	3	3	61		44	99
+5	3	3	62		45	98
+5	3	3	63		44	98
+5	3	3	64		45	97
+5	3	3	65		44	97
+5	3	3	66		45	96
+5	3	3	67		44	96
+6	0	0	0		48	32
+6	0	0	1		49	32
+6	0	0	2		48	33
+6	0	0	3		49	33
+6	0	0	4		48	34
+6	0	0	5		49	34
+6	0	0	6		48	35
+6	0	0	7		49	35
+6	0	0	8		48	36
+6	0	0	9		49	36
+6	0	0	10		48	37
+6	0	0	11		-1	-1
+6	0	0	12		49	37
+6	0	0	13		48	38
+6	0	0	14		49	38
+6	0	0	15		48	39
+6	0	0	16		49	39
+6	0	0	17		48	40
+6	0	0	18		49	40
+6	0	0	19		48	41
+6	0	0	20		49	41
+6	0	0	21		48	42
+6	0	0	22		-1	-1
+6	0	0	23		49	42
+6	0	0	24		48	43
+6	0	0	25		49	43
+6	0	0	26		48	44
+6	0	0	27		49	44
+6	0	0	28		48	45
+6	0	0	29		49	45
+6	0	0	30		48	46
+6	0	0	31		49	46
+6	0	0	32		48	47
+6	0	0	33		49	47
+6	0	0	34		48	48
+6	0	0	35		49	48
+6	0	0	36		48	49
+6	0	0	37		49	49
+6	0	0	38		48	50
+6	0	0	39		49	50
+6	0	0	40		48	51
+6	0	0	41		49	51
+6	0	0	42		48	52
+6	0	0	43		49	52
+6	0	0	44		48	53
+6	0	0	45		-1	-1
+6	0	0	46		49	53
+6	0	0	47		48	54
+6	0	0	48		49	54
+6	0	0	49		48	55
+6	0	0	50		49	55
+6	0	0	51		48	56
+6	0	0	52		49	56
+6	0	0	53		48	57
+6	0	0	54		49	57
+6	0	0	55		48	58
+6	0	0	56		-1	-1
+6	0	0	57		49	58
+6	0	0	58		48	59
+6	0	0	59		49	59
+6	0	0	60		48	60
+6	0	0	61		49	60
+6	0	0	62		48	61
+6	0	0	63		49	61
+6	0	0	64		48	62
+6	0	0	65		49	62
+6	0	0	66		48	63
+6	0	0	67		49	63
+6	0	1	0		48	0
+6	0	1	1		49	0
+6	0	1	2		48	1
+6	0	1	3		49	1
+6	0	1	4		48	2
+6	0	1	5		49	2
+6	0	1	6		48	3
+6	0	1	7		49	3
+6	0	1	8		48	4
+6	0	1	9		49	4
+6	0	1	10		48	5
+6	0	1	11		-1	-1
+6	0	1	12		49	5
+6	0	1	13		48	6
+6	0	1	14		49	6
+6	0	1	15		48	7
+6	0	1	16		49	7
+6	0	1	17		48	8
+6	0	1	18		49	8
+6	0	1	19		48	9
+6	0	1	20		49	9
+6	0	1	21		48	10
+6	0	1	22		-1	-1
+6	0	1	23		49	10
+6	0	1	24		48	11
+6	0	1	25		49	11
+6	0	1	26		48	12
+6	0	1	27		49	12
+6	0	1	28		48	13
+6	0	1	29		49	13
+6	0	1	30		48	14
+6	0	1	31		49	14
+6	0	1	32		48	15
+6	0	1	33		49	15
+6	0	1	34		48	16
+6	0	1	35		49	16
+6	0	1	36		48	17
+6	0	1	37		49	17
+6	0	1	38		48	18
+6	0	1	39		49	18
+6	0	1	40		48	19
+6	0	1	41		49	19
+6	0	1	42		48	20
+6	0	1	43		49	20
+6	0	1	44		48	21
+6	0	1	45		-1	-1
+6	0	1	46		49	21
+6	0	1	47		48	22
+6	0	1	48		49	22
+6	0	1	49		48	23
+6	0	1	50		49	23
+6	0	1	51		48	24
+6	0	1	52		49	24
+6	0	1	53		48	25
+6	0	1	54		49	25
+6	0	1	55		48	26
+6	0	1	56		-1	-1
+6	0	1	57		49	26
+6	0	1	58		48	27
+6	0	1	59		49	27
+6	0	1	60		48	28
+6	0	1	61		49	28
+6	0	1	62		48	29
+6	0	1	63		49	29
+6	0	1	64		48	30
+6	0	1	65		49	30
+6	0	1	66		48	31
+6	0	1	67		49	31
+6	0	2	0		50	32
+6	0	2	1		51	32
+6	0	2	2		50	33
+6	0	2	3		51	33
+6	0	2	4		50	34
+6	0	2	5		51	34
+6	0	2	6		50	35
+6	0	2	7		51	35
+6	0	2	8		50	36
+6	0	2	9		51	36
+6	0	2	10		50	37
+6	0	2	11		-1	-1
+6	0	2	12		51	37
+6	0	2	13		50	38
+6	0	2	14		51	38
+6	0	2	15		50	39
+6	0	2	16		51	39
+6	0	2	17		50	40
+6	0	2	18		51	40
+6	0	2	19		50	41
+6	0	2	20		51	41
+6	0	2	21		50	42
+6	0	2	22		-1	-1
+6	0	2	23		51	42
+6	0	2	24		50	43
+6	0	2	25		51	43
+6	0	2	26		50	44
+6	0	2	27		51	44
+6	0	2	28		50	45
+6	0	2	29		51	45
+6	0	2	30		50	46
+6	0	2	31		51	46
+6	0	2	32		50	47
+6	0	2	33		51	47
+6	0	2	34		50	48
+6	0	2	35		51	48
+6	0	2	36		50	49
+6	0	2	37		51	49
+6	0	2	38		50	50
+6	0	2	39		51	50
+6	0	2	40		50	51
+6	0	2	41		51	51
+6	0	2	42		50	52
+6	0	2	43		51	52
+6	0	2	44		50	53
+6	0	2	45		-1	-1
+6	0	2	46		51	53
+6	0	2	47		50	54
+6	0	2	48		51	54
+6	0	2	49		50	55
+6	0	2	50		51	55
+6	0	2	51		50	56
+6	0	2	52		51	56
+6	0	2	53		50	57
+6	0	2	54		51	57
+6	0	2	55		50	58
+6	0	2	56		-1	-1
+6	0	2	57		51	58
+6	0	2	58		50	59
+6	0	2	59		51	59
+6	0	2	60		50	60
+6	0	2	61		51	60
+6	0	2	62		50	61
+6	0	2	63		51	61
+6	0	2	64		50	62
+6	0	2	65		51	62
+6	0	2	66		50	63
+6	0	2	67		51	63
+6	0	3	0		50	0
+6	0	3	1		51	0
+6	0	3	2		50	1
+6	0	3	3		51	1
+6	0	3	4		50	2
+6	0	3	5		51	2
+6	0	3	6		50	3
+6	0	3	7		51	3
+6	0	3	8		50	4
+6	0	3	9		51	4
+6	0	3	10		50	5
+6	0	3	11		-1	-1
+6	0	3	12		51	5
+6	0	3	13		50	6
+6	0	3	14		51	6
+6	0	3	15		50	7
+6	0	3	16		51	7
+6	0	3	17		50	8
+6	0	3	18		51	8
+6	0	3	19		50	9
+6	0	3	20		51	9
+6	0	3	21		50	10
+6	0	3	22		-1	-1
+6	0	3	23		51	10
+6	0	3	24		50	11
+6	0	3	25		51	11
+6	0	3	26		50	12
+6	0	3	27		51	12
+6	0	3	28		50	13
+6	0	3	29		51	13
+6	0	3	30		50	14
+6	0	3	31		51	14
+6	0	3	32		50	15
+6	0	3	33		51	15
+6	0	3	34		50	16
+6	0	3	35		51	16
+6	0	3	36		50	17
+6	0	3	37		51	17
+6	0	3	38		50	18
+6	0	3	39		51	18
+6	0	3	40		50	19
+6	0	3	41		51	19
+6	0	3	42		50	20
+6	0	3	43		51	20
+6	0	3	44		50	21
+6	0	3	45		-1	-1
+6	0	3	46		51	21
+6	0	3	47		50	22
+6	0	3	48		51	22
+6	0	3	49		50	23
+6	0	3	50		51	23
+6	0	3	51		50	24
+6	0	3	52		51	24
+6	0	3	53		50	25
+6	0	3	54		51	25
+6	0	3	55		50	26
+6	0	3	56		-1	-1
+6	0	3	57		51	26
+6	0	3	58		50	27
+6	0	3	59		51	27
+6	0	3	60		50	28
+6	0	3	61		51	28
+6	0	3	62		50	29
+6	0	3	63		51	29
+6	0	3	64		50	30
+6	0	3	65		51	30
+6	0	3	66		50	31
+6	0	3	67		51	31
+6	1	0	0		51	95
+6	1	0	1		50	95
+6	1	0	2		51	94
+6	1	0	3		50	94
+6	1	0	4		51	93
+6	1	0	5		50	93
+6	1	0	6		51	92
+6	1	0	7		50	92
+6	1	0	8		51	91
+6	1	0	9		50	91
+6	1	0	10		51	90
+6	1	0	11		-1	-1
+6	1	0	12		50	90
+6	1	0	13		51	89
+6	1	0	14		50	89
+6	1	0	15		51	88
+6	1	0	16		50	88
+6	1	0	17		51	87
+6	1	0	18		50	87
+6	1	0	19		51	86
+6	1	0	20		50	86
+6	1	0	21		51	85
+6	1	0	22		-1	-1
+6	1	0	23		50	85
+6	1	0	24		51	84
+6	1	0	25		50	84
+6	1	0	26		51	83
+6	1	0	27		50	83
+6	1	0	28		51	82
+6	1	0	29		50	82
+6	1	0	30		51	81
+6	1	0	31		50	81
+6	1	0	32		51	80
+6	1	0	33		50	80
+6	1	0	34		51	79
+6	1	0	35		50	79
+6	1	0	36		51	78
+6	1	0	37		50	78
+6	1	0	38		51	77
+6	1	0	39		50	77
+6	1	0	40		51	76
+6	1	0	41		50	76
+6	1	0	42		51	75
+6	1	0	43		50	75
+6	1	0	44		51	74
+6	1	0	45		-1	-1
+6	1	0	46		50	74
+6	1	0	47		51	73
+6	1	0	48		50	73
+6	1	0	49		51	72
+6	1	0	50		50	72
+6	1	0	51		51	71
+6	1	0	52		50	71
+6	1	0	53		51	70
+6	1	0	54		50	70
+6	1	0	55		51	69
+6	1	0	56		-1	-1
+6	1	0	57		50	69
+6	1	0	58		51	68
+6	1	0	59		50	68
+6	1	0	60		51	67
+6	1	0	61		50	67
+6	1	0	62		51	66
+6	1	0	63		50	66
+6	1	0	64		51	65
+6	1	0	65		50	65
+6	1	0	66		51	64
+6	1	0	67		50	64
+6	1	1	0		51	127
+6	1	1	1		50	127
+6	1	1	2		51	126
+6	1	1	3		50	126
+6	1	1	4		51	125
+6	1	1	5		50	125
+6	1	1	6		51	124
+6	1	1	7		50	124
+6	1	1	8		51	123
+6	1	1	9		50	123
+6	1	1	10		51	122
+6	1	1	11		-1	-1
+6	1	1	12		50	122
+6	1	1	13		51	121
+6	1	1	14		50	121
+6	1	1	15		51	120
+6	1	1	16		50	120
+6	1	1	17		51	119
+6	1	1	18		50	119
+6	1	1	19		51	118
+6	1	1	20		50	118
+6	1	1	21		51	117
+6	1	1	22		-1	-1
+6	1	1	23		50	117
+6	1	1	24		51	116
+6	1	1	25		50	116
+6	1	1	26		51	115
+6	1	1	27		50	115
+6	1	1	28		51	114
+6	1	1	29		50	114
+6	1	1	30		51	113
+6	1	1	31		50	113
+6	1	1	32		51	112
+6	1	1	33		50	112
+6	1	1	34		51	111
+6	1	1	35		50	111
+6	1	1	36		51	110
+6	1	1	37		50	110
+6	1	1	38		51	109
+6	1	1	39		50	109
+6	1	1	40		51	108
+6	1	1	41		50	108
+6	1	1	42		51	107
+6	1	1	43		50	107
+6	1	1	44		51	106
+6	1	1	45		-1	-1
+6	1	1	46		50	106
+6	1	1	47		51	105
+6	1	1	48		50	105
+6	1	1	49		51	104
+6	1	1	50		50	104
+6	1	1	51		51	103
+6	1	1	52		50	103
+6	1	1	53		51	102
+6	1	1	54		50	102
+6	1	1	55		51	101
+6	1	1	56		-1	-1
+6	1	1	57		50	101
+6	1	1	58		51	100
+6	1	1	59		50	100
+6	1	1	60		51	99
+6	1	1	61		50	99
+6	1	1	62		51	98
+6	1	1	63		50	98
+6	1	1	64		51	97
+6	1	1	65		50	97
+6	1	1	66		51	96
+6	1	1	67		50	96
+6	1	2	0		49	95
+6	1	2	1		48	95
+6	1	2	2		49	94
+6	1	2	3		48	94
+6	1	2	4		49	93
+6	1	2	5		48	93
+6	1	2	6		49	92
+6	1	2	7		48	92
+6	1	2	8		49	91
+6	1	2	9		48	91
+6	1	2	10		49	90
+6	1	2	11		-1	-1
+6	1	2	12		48	90
+6	1	2	13		49	89
+6	1	2	14		48	89
+6	1	2	15		49	88
+6	1	2	16		48	88
+6	1	2	17		49	87
+6	1	2	18		48	87
+6	1	2	19		49	86
+6	1	2	20		48	86
+6	1	2	21		49	85
+6	1	2	22		-1	-1
+6	1	2	23		48	85
+6	1	2	24		49	84
+6	1	2	25		48	84
+6	1	2	26		49	83
+6	1	2	27		48	83
+6	1	2	28		49	82
+6	1	2	29		48	82
+6	1	2	30		49	81
+6	1	2	31		48	81
+6	1	2	32		49	80
+6	1	2	33		48	80
+6	1	2	34		49	79
+6	1	2	35		48	79
+6	1	2	36		49	78
+6	1	2	37		48	78
+6	1	2	38		49	77
+6	1	2	39		48	77
+6	1	2	40		49	76
+6	1	2	41		48	76
+6	1	2	42		49	75
+6	1	2	43		48	75
+6	1	2	44		49	74
+6	1	2	45		-1	-1
+6	1	2	46		48	74
+6	1	2	47		49	73
+6	1	2	48		48	73
+6	1	2	49		49	72
+6	1	2	50		48	72
+6	1	2	51		49	71
+6	1	2	52		48	71
+6	1	2	53		49	70
+6	1	2	54		48	70
+6	1	2	55		49	69
+6	1	2	56		-1	-1
+6	1	2	57		48	69
+6	1	2	58		49	68
+6	1	2	59		48	68
+6	1	2	60		49	67
+6	1	2	61		48	67
+6	1	2	62		49	66
+6	1	2	63		48	66
+6	1	2	64		49	65
+6	1	2	65		48	65
+6	1	2	66		49	64
+6	1	2	67		48	64
+6	1	3	0		49	127
+6	1	3	1		48	127
+6	1	3	2		49	126
+6	1	3	3		48	126
+6	1	3	4		49	125
+6	1	3	5		48	125
+6	1	3	6		49	124
+6	1	3	7		48	124
+6	1	3	8		49	123
+6	1	3	9		48	123
+6	1	3	10		49	122
+6	1	3	11		-1	-1
+6	1	3	12		48	122
+6	1	3	13		49	121
+6	1	3	14		48	121
+6	1	3	15		49	120
+6	1	3	16		48	120
+6	1	3	17		49	119
+6	1	3	18		48	119
+6	1	3	19		49	118
+6	1	3	20		48	118
+6	1	3	21		49	117
+6	1	3	22		-1	-1
+6	1	3	23		48	117
+6	1	3	24		49	116
+6	1	3	25		48	116
+6	1	3	26		49	115
+6	1	3	27		48	115
+6	1	3	28		49	114
+6	1	3	29		48	114
+6	1	3	30		49	113
+6	1	3	31		48	113
+6	1	3	32		49	112
+6	1	3	33		48	112
+6	1	3	34		49	111
+6	1	3	35		48	111
+6	1	3	36		49	110
+6	1	3	37		48	110
+6	1	3	38		49	109
+6	1	3	39		48	109
+6	1	3	40		49	108
+6	1	3	41		48	108
+6	1	3	42		49	107
+6	1	3	43		48	107
+6	1	3	44		49	106
+6	1	3	45		-1	-1
+6	1	3	46		48	106
+6	1	3	47		49	105
+6	1	3	48		48	105
+6	1	3	49		49	104
+6	1	3	50		48	104
+6	1	3	51		49	103
+6	1	3	52		48	103
+6	1	3	53		49	102
+6	1	3	54		48	102
+6	1	3	55		49	101
+6	1	3	56		-1	-1
+6	1	3	57		48	101
+6	1	3	58		49	100
+6	1	3	59		48	100
+6	1	3	60		49	99
+6	1	3	61		48	99
+6	1	3	62		49	98
+6	1	3	63		48	98
+6	1	3	64		49	97
+6	1	3	65		48	97
+6	1	3	66		49	96
+6	1	3	67		48	96
+6	2	0	0		52	32
+6	2	0	1		53	32
+6	2	0	2		52	33
+6	2	0	3		53	33
+6	2	0	4		52	34
+6	2	0	5		53	34
+6	2	0	6		52	35
+6	2	0	7		53	35
+6	2	0	8		52	36
+6	2	0	9		53	36
+6	2	0	10		52	37
+6	2	0	11		-1	-1
+6	2	0	12		53	37
+6	2	0	13		52	38
+6	2	0	14		53	38
+6	2	0	15		52	39
+6	2	0	16		53	39
+6	2	0	17		52	40
+6	2	0	18		53	40
+6	2	0	19		52	41
+6	2	0	20		53	41
+6	2	0	21		52	42
+6	2	0	22		-1	-1
+6	2	0	23		53	42
+6	2	0	24		52	43
+6	2	0	25		53	43
+6	2	0	26		52	44
+6	2	0	27		53	44
+6	2	0	28		52	45
+6	2	0	29		53	45
+6	2	0	30		52	46
+6	2	0	31		53	46
+6	2	0	32		52	47
+6	2	0	33		53	47
+6	2	0	34		52	48
+6	2	0	35		53	48
+6	2	0	36		52	49
+6	2	0	37		53	49
+6	2	0	38		52	50
+6	2	0	39		53	50
+6	2	0	40		52	51
+6	2	0	41		53	51
+6	2	0	42		52	52
+6	2	0	43		53	52
+6	2	0	44		52	53
+6	2	0	45		-1	-1
+6	2	0	46		53	53
+6	2	0	47		52	54
+6	2	0	48		53	54
+6	2	0	49		52	55
+6	2	0	50		53	55
+6	2	0	51		52	56
+6	2	0	52		53	56
+6	2	0	53		52	57
+6	2	0	54		53	57
+6	2	0	55		52	58
+6	2	0	56		-1	-1
+6	2	0	57		53	58
+6	2	0	58		52	59
+6	2	0	59		53	59
+6	2	0	60		52	60
+6	2	0	61		53	60
+6	2	0	62		52	61
+6	2	0	63		53	61
+6	2	0	64		52	62
+6	2	0	65		53	62
+6	2	0	66		52	63
+6	2	0	67		53	63
+6	2	1	0		52	0
+6	2	1	1		53	0
+6	2	1	2		52	1
+6	2	1	3		53	1
+6	2	1	4		52	2
+6	2	1	5		53	2
+6	2	1	6		52	3
+6	2	1	7		53	3
+6	2	1	8		52	4
+6	2	1	9		53	4
+6	2	1	10		52	5
+6	2	1	11		-1	-1
+6	2	1	12		53	5
+6	2	1	13		52	6
+6	2	1	14		53	6
+6	2	1	15		52	7
+6	2	1	16		53	7
+6	2	1	17		52	8
+6	2	1	18		53	8
+6	2	1	19		52	9
+6	2	1	20		53	9
+6	2	1	21		52	10
+6	2	1	22		-1	-1
+6	2	1	23		53	10
+6	2	1	24		52	11
+6	2	1	25		53	11
+6	2	1	26		52	12
+6	2	1	27		53	12
+6	2	1	28		52	13
+6	2	1	29		53	13
+6	2	1	30		52	14
+6	2	1	31		53	14
+6	2	1	32		52	15
+6	2	1	33		53	15
+6	2	1	34		52	16
+6	2	1	35		53	16
+6	2	1	36		52	17
+6	2	1	37		53	17
+6	2	1	38		52	18
+6	2	1	39		53	18
+6	2	1	40		52	19
+6	2	1	41		53	19
+6	2	1	42		52	20
+6	2	1	43		53	20
+6	2	1	44		52	21
+6	2	1	45		-1	-1
+6	2	1	46		53	21
+6	2	1	47		52	22
+6	2	1	48		53	22
+6	2	1	49		52	23
+6	2	1	50		53	23
+6	2	1	51		52	24
+6	2	1	52		53	24
+6	2	1	53		52	25
+6	2	1	54		53	25
+6	2	1	55		52	26
+6	2	1	56		-1	-1
+6	2	1	57		53	26
+6	2	1	58		52	27
+6	2	1	59		53	27
+6	2	1	60		52	28
+6	2	1	61		53	28
+6	2	1	62		52	29
+6	2	1	63		53	29
+6	2	1	64		52	30
+6	2	1	65		53	30
+6	2	1	66		52	31
+6	2	1	67		53	31
+6	2	2	0		54	32
+6	2	2	1		55	32
+6	2	2	2		54	33
+6	2	2	3		55	33
+6	2	2	4		54	34
+6	2	2	5		55	34
+6	2	2	6		54	35
+6	2	2	7		55	35
+6	2	2	8		54	36
+6	2	2	9		55	36
+6	2	2	10		54	37
+6	2	2	11		-1	-1
+6	2	2	12		55	37
+6	2	2	13		54	38
+6	2	2	14		55	38
+6	2	2	15		54	39
+6	2	2	16		55	39
+6	2	2	17		54	40
+6	2	2	18		55	40
+6	2	2	19		54	41
+6	2	2	20		55	41
+6	2	2	21		54	42
+6	2	2	22		-1	-1
+6	2	2	23		55	42
+6	2	2	24		54	43
+6	2	2	25		55	43
+6	2	2	26		54	44
+6	2	2	27		55	44
+6	2	2	28		54	45
+6	2	2	29		55	45
+6	2	2	30		54	46
+6	2	2	31		55	46
+6	2	2	32		54	47
+6	2	2	33		55	47
+6	2	2	34		54	48
+6	2	2	35		55	48
+6	2	2	36		54	49
+6	2	2	37		55	49
+6	2	2	38		54	50
+6	2	2	39		55	50
+6	2	2	40		54	51
+6	2	2	41		55	51
+6	2	2	42		54	52
+6	2	2	43		55	52
+6	2	2	44		54	53
+6	2	2	45		-1	-1
+6	2	2	46		55	53
+6	2	2	47		54	54
+6	2	2	48		55	54
+6	2	2	49		54	55
+6	2	2	50		55	55
+6	2	2	51		54	56
+6	2	2	52		55	56
+6	2	2	53		54	57
+6	2	2	54		55	57
+6	2	2	55		54	58
+6	2	2	56		-1	-1
+6	2	2	57		55	58
+6	2	2	58		54	59
+6	2	2	59		55	59
+6	2	2	60		54	60
+6	2	2	61		55	60
+6	2	2	62		54	61
+6	2	2	63		55	61
+6	2	2	64		54	62
+6	2	2	65		55	62
+6	2	2	66		54	63
+6	2	2	67		55	63
+6	2	3	0		54	0
+6	2	3	1		55	0
+6	2	3	2		54	1
+6	2	3	3		55	1
+6	2	3	4		54	2
+6	2	3	5		55	2
+6	2	3	6		54	3
+6	2	3	7		55	3
+6	2	3	8		54	4
+6	2	3	9		55	4
+6	2	3	10		54	5
+6	2	3	11		-1	-1
+6	2	3	12		55	5
+6	2	3	13		54	6
+6	2	3	14		55	6
+6	2	3	15		54	7
+6	2	3	16		55	7
+6	2	3	17		54	8
+6	2	3	18		55	8
+6	2	3	19		54	9
+6	2	3	20		55	9
+6	2	3	21		54	10
+6	2	3	22		-1	-1
+6	2	3	23		55	10
+6	2	3	24		54	11
+6	2	3	25		55	11
+6	2	3	26		54	12
+6	2	3	27		55	12
+6	2	3	28		54	13
+6	2	3	29		55	13
+6	2	3	30		54	14
+6	2	3	31		55	14
+6	2	3	32		54	15
+6	2	3	33		55	15
+6	2	3	34		54	16
+6	2	3	35		55	16
+6	2	3	36		54	17
+6	2	3	37		55	17
+6	2	3	38		54	18
+6	2	3	39		55	18
+6	2	3	40		54	19
+6	2	3	41		55	19
+6	2	3	42		54	20
+6	2	3	43		55	20
+6	2	3	44		54	21
+6	2	3	45		-1	-1
+6	2	3	46		55	21
+6	2	3	47		54	22
+6	2	3	48		55	22
+6	2	3	49		54	23
+6	2	3	50		55	23
+6	2	3	51		54	24
+6	2	3	52		55	24
+6	2	3	53		54	25
+6	2	3	54		55	25
+6	2	3	55		54	26
+6	2	3	56		-1	-1
+6	2	3	57		55	26
+6	2	3	58		54	27
+6	2	3	59		55	27
+6	2	3	60		54	28
+6	2	3	61		55	28
+6	2	3	62		54	29
+6	2	3	63		55	29
+6	2	3	64		54	30
+6	2	3	65		55	30
+6	2	3	66		54	31
+6	2	3	67		55	31
+6	3	0	0		55	95
+6	3	0	1		54	95
+6	3	0	2		55	94
+6	3	0	3		54	94
+6	3	0	4		55	93
+6	3	0	5		54	93
+6	3	0	6		55	92
+6	3	0	7		54	92
+6	3	0	8		55	91
+6	3	0	9		54	91
+6	3	0	10		55	90
+6	3	0	11		-1	-1
+6	3	0	12		54	90
+6	3	0	13		55	89
+6	3	0	14		54	89
+6	3	0	15		55	88
+6	3	0	16		54	88
+6	3	0	17		55	87
+6	3	0	18		54	87
+6	3	0	19		55	86
+6	3	0	20		54	86
+6	3	0	21		55	85
+6	3	0	22		-1	-1
+6	3	0	23		54	85
+6	3	0	24		55	84
+6	3	0	25		54	84
+6	3	0	26		55	83
+6	3	0	27		54	83
+6	3	0	28		55	82
+6	3	0	29		54	82
+6	3	0	30		55	81
+6	3	0	31		54	81
+6	3	0	32		55	80
+6	3	0	33		54	80
+6	3	0	34		55	79
+6	3	0	35		54	79
+6	3	0	36		55	78
+6	3	0	37		54	78
+6	3	0	38		55	77
+6	3	0	39		54	77
+6	3	0	40		55	76
+6	3	0	41		54	76
+6	3	0	42		55	75
+6	3	0	43		54	75
+6	3	0	44		55	74
+6	3	0	45		-1	-1
+6	3	0	46		54	74
+6	3	0	47		55	73
+6	3	0	48		54	73
+6	3	0	49		55	72
+6	3	0	50		54	72
+6	3	0	51		55	71
+6	3	0	52		54	71
+6	3	0	53		55	70
+6	3	0	54		54	70
+6	3	0	55		55	69
+6	3	0	56		-1	-1
+6	3	0	57		54	69
+6	3	0	58		55	68
+6	3	0	59		54	68
+6	3	0	60		55	67
+6	3	0	61		54	67
+6	3	0	62		55	66
+6	3	0	63		54	66
+6	3	0	64		55	65
+6	3	0	65		54	65
+6	3	0	66		55	64
+6	3	0	67		54	64
+6	3	1	0		55	127
+6	3	1	1		54	127
+6	3	1	2		55	126
+6	3	1	3		54	126
+6	3	1	4		55	125
+6	3	1	5		54	125
+6	3	1	6		55	124
+6	3	1	7		54	124
+6	3	1	8		55	123
+6	3	1	9		54	123
+6	3	1	10		55	122
+6	3	1	11		-1	-1
+6	3	1	12		54	122
+6	3	1	13		55	121
+6	3	1	14		54	121
+6	3	1	15		55	120
+6	3	1	16		54	120
+6	3	1	17		55	119
+6	3	1	18		54	119
+6	3	1	19		55	118
+6	3	1	20		54	118
+6	3	1	21		55	117
+6	3	1	22		-1	-1
+6	3	1	23		54	117
+6	3	1	24		55	116
+6	3	1	25		54	116
+6	3	1	26		55	115
+6	3	1	27		54	115
+6	3	1	28		55	114
+6	3	1	29		54	114
+6	3	1	30		55	113
+6	3	1	31		54	113
+6	3	1	32		55	112
+6	3	1	33		54	112
+6	3	1	34		55	111
+6	3	1	35		54	111
+6	3	1	36		55	110
+6	3	1	37		54	110
+6	3	1	38		55	109
+6	3	1	39		54	109
+6	3	1	40		55	108
+6	3	1	41		54	108
+6	3	1	42		55	107
+6	3	1	43		54	107
+6	3	1	44		55	106
+6	3	1	45		-1	-1
+6	3	1	46		54	106
+6	3	1	47		55	105
+6	3	1	48		54	105
+6	3	1	49		55	104
+6	3	1	50		54	104
+6	3	1	51		55	103
+6	3	1	52		54	103
+6	3	1	53		55	102
+6	3	1	54		54	102
+6	3	1	55		55	101
+6	3	1	56		-1	-1
+6	3	1	57		54	101
+6	3	1	58		55	100
+6	3	1	59		54	100
+6	3	1	60		55	99
+6	3	1	61		54	99
+6	3	1	62		55	98
+6	3	1	63		54	98
+6	3	1	64		55	97
+6	3	1	65		54	97
+6	3	1	66		55	96
+6	3	1	67		54	96
+6	3	2	0		53	95
+6	3	2	1		52	95
+6	3	2	2		53	94
+6	3	2	3		52	94
+6	3	2	4		53	93
+6	3	2	5		52	93
+6	3	2	6		53	92
+6	3	2	7		52	92
+6	3	2	8		53	91
+6	3	2	9		52	91
+6	3	2	10		53	90
+6	3	2	11		-1	-1
+6	3	2	12		52	90
+6	3	2	13		53	89
+6	3	2	14		52	89
+6	3	2	15		53	88
+6	3	2	16		52	88
+6	3	2	17		53	87
+6	3	2	18		52	87
+6	3	2	19		53	86
+6	3	2	20		52	86
+6	3	2	21		53	85
+6	3	2	22		-1	-1
+6	3	2	23		52	85
+6	3	2	24		53	84
+6	3	2	25		52	84
+6	3	2	26		53	83
+6	3	2	27		52	83
+6	3	2	28		53	82
+6	3	2	29		52	82
+6	3	2	30		53	81
+6	3	2	31		52	81
+6	3	2	32		53	80
+6	3	2	33		52	80
+6	3	2	34		53	79
+6	3	2	35		52	79
+6	3	2	36		53	78
+6	3	2	37		52	78
+6	3	2	38		53	77
+6	3	2	39		52	77
+6	3	2	40		53	76
+6	3	2	41		52	76
+6	3	2	42		53	75
+6	3	2	43		52	75
+6	3	2	44		53	74
+6	3	2	45		-1	-1
+6	3	2	46		52	74
+6	3	2	47		53	73
+6	3	2	48		52	73
+6	3	2	49		53	72
+6	3	2	50		52	72
+6	3	2	51		53	71
+6	3	2	52		52	71
+6	3	2	53		53	70
+6	3	2	54		52	70
+6	3	2	55		53	69
+6	3	2	56		-1	-1
+6	3	2	57		52	69
+6	3	2	58		53	68
+6	3	2	59		52	68
+6	3	2	60		53	67
+6	3	2	61		52	67
+6	3	2	62		53	66
+6	3	2	63		52	66
+6	3	2	64		53	65
+6	3	2	65		52	65
+6	3	2	66		53	64
+6	3	2	67		52	64
+6	3	3	0		53	127
+6	3	3	1		52	127
+6	3	3	2		53	126
+6	3	3	3		52	126
+6	3	3	4		53	125
+6	3	3	5		52	125
+6	3	3	6		53	124
+6	3	3	7		52	124
+6	3	3	8		53	123
+6	3	3	9		52	123
+6	3	3	10		53	122
+6	3	3	11		-1	-1
+6	3	3	12		52	122
+6	3	3	13		53	121
+6	3	3	14		52	121
+6	3	3	15		53	120
+6	3	3	16		52	120
+6	3	3	17		53	119
+6	3	3	18		52	119
+6	3	3	19		53	118
+6	3	3	20		52	118
+6	3	3	21		53	117
+6	3	3	22		-1	-1
+6	3	3	23		52	117
+6	3	3	24		53	116
+6	3	3	25		52	116
+6	3	3	26		53	115
+6	3	3	27		52	115
+6	3	3	28		53	114
+6	3	3	29		52	114
+6	3	3	30		53	113
+6	3	3	31		52	113
+6	3	3	32		53	112
+6	3	3	33		52	112
+6	3	3	34		53	111
+6	3	3	35		52	111
+6	3	3	36		53	110
+6	3	3	37		52	110
+6	3	3	38		53	109
+6	3	3	39		52	109
+6	3	3	40		53	108
+6	3	3	41		52	108
+6	3	3	42		53	107
+6	3	3	43		52	107
+6	3	3	44		53	106
+6	3	3	45		-1	-1
+6	3	3	46		52	106
+6	3	3	47		53	105
+6	3	3	48		52	105
+6	3	3	49		53	104
+6	3	3	50		52	104
+6	3	3	51		53	103
+6	3	3	52		52	103
+6	3	3	53		53	102
+6	3	3	54		52	102
+6	3	3	55		53	101
+6	3	3	56		-1	-1
+6	3	3	57		52	101
+6	3	3	58		53	100
+6	3	3	59		52	100
+6	3	3	60		53	99
+6	3	3	61		52	99
+6	3	3	62		53	98
+6	3	3	63		52	98
+6	3	3	64		53	97
+6	3	3	65		52	97
+6	3	3	66		53	96
+6	3	3	67		52	96
+7	0	0	0		56	32
+7	0	0	1		57	32
+7	0	0	2		56	33
+7	0	0	3		57	33
+7	0	0	4		56	34
+7	0	0	5		57	34
+7	0	0	6		56	35
+7	0	0	7		57	35
+7	0	0	8		56	36
+7	0	0	9		57	36
+7	0	0	10		56	37
+7	0	0	11		-1	-1
+7	0	0	12		57	37
+7	0	0	13		56	38
+7	0	0	14		57	38
+7	0	0	15		56	39
+7	0	0	16		57	39
+7	0	0	17		56	40
+7	0	0	18		57	40
+7	0	0	19		56	41
+7	0	0	20		57	41
+7	0	0	21		56	42
+7	0	0	22		-1	-1
+7	0	0	23		57	42
+7	0	0	24		56	43
+7	0	0	25		57	43
+7	0	0	26		56	44
+7	0	0	27		57	44
+7	0	0	28		56	45
+7	0	0	29		57	45
+7	0	0	30		56	46
+7	0	0	31		57	46
+7	0	0	32		56	47
+7	0	0	33		57	47
+7	0	0	34		56	48
+7	0	0	35		57	48
+7	0	0	36		56	49
+7	0	0	37		57	49
+7	0	0	38		56	50
+7	0	0	39		57	50
+7	0	0	40		56	51
+7	0	0	41		57	51
+7	0	0	42		56	52
+7	0	0	43		57	52
+7	0	0	44		56	53
+7	0	0	45		-1	-1
+7	0	0	46		57	53
+7	0	0	47		56	54
+7	0	0	48		57	54
+7	0	0	49		56	55
+7	0	0	50		57	55
+7	0	0	51		56	56
+7	0	0	52		57	56
+7	0	0	53		56	57
+7	0	0	54		57	57
+7	0	0	55		56	58
+7	0	0	56		-1	-1
+7	0	0	57		57	58
+7	0	0	58		56	59
+7	0	0	59		57	59
+7	0	0	60		56	60
+7	0	0	61		57	60
+7	0	0	62		56	61
+7	0	0	63		57	61
+7	0	0	64		56	62
+7	0	0	65		57	62
+7	0	0	66		56	63
+7	0	0	67		57	63
+7	0	1	0		56	0
+7	0	1	1		57	0
+7	0	1	2		56	1
+7	0	1	3		57	1
+7	0	1	4		56	2
+7	0	1	5		57	2
+7	0	1	6		56	3
+7	0	1	7		57	3
+7	0	1	8		56	4
+7	0	1	9		57	4
+7	0	1	10		56	5
+7	0	1	11		-1	-1
+7	0	1	12		57	5
+7	0	1	13		56	6
+7	0	1	14		57	6
+7	0	1	15		56	7
+7	0	1	16		57	7
+7	0	1	17		56	8
+7	0	1	18		57	8
+7	0	1	19		56	9
+7	0	1	20		57	9
+7	0	1	21		56	10
+7	0	1	22		-1	-1
+7	0	1	23		57	10
+7	0	1	24		56	11
+7	0	1	25		57	11
+7	0	1	26		56	12
+7	0	1	27		57	12
+7	0	1	28		56	13
+7	0	1	29		57	13
+7	0	1	30		56	14
+7	0	1	31		57	14
+7	0	1	32		56	15
+7	0	1	33		57	15
+7	0	1	34		56	16
+7	0	1	35		57	16
+7	0	1	36		56	17
+7	0	1	37		57	17
+7	0	1	38		56	18
+7	0	1	39		57	18
+7	0	1	40		56	19
+7	0	1	41		57	19
+7	0	1	42		56	20
+7	0	1	43		57	20
+7	0	1	44		56	21
+7	0	1	45		-1	-1
+7	0	1	46		57	21
+7	0	1	47		56	22
+7	0	1	48		57	22
+7	0	1	49		56	23
+7	0	1	50		57	23
+7	0	1	51		56	24
+7	0	1	52		57	24
+7	0	1	53		56	25
+7	0	1	54		57	25
+7	0	1	55		56	26
+7	0	1	56		-1	-1
+7	0	1	57		57	26
+7	0	1	58		56	27
+7	0	1	59		57	27
+7	0	1	60		56	28
+7	0	1	61		57	28
+7	0	1	62		56	29
+7	0	1	63		57	29
+7	0	1	64		56	30
+7	0	1	65		57	30
+7	0	1	66		56	31
+7	0	1	67		57	31
+7	0	2	0		58	32
+7	0	2	1		59	32
+7	0	2	2		58	33
+7	0	2	3		59	33
+7	0	2	4		58	34
+7	0	2	5		59	34
+7	0	2	6		58	35
+7	0	2	7		59	35
+7	0	2	8		58	36
+7	0	2	9		59	36
+7	0	2	10		58	37
+7	0	2	11		-1	-1
+7	0	2	12		59	37
+7	0	2	13		58	38
+7	0	2	14		59	38
+7	0	2	15		58	39
+7	0	2	16		59	39
+7	0	2	17		58	40
+7	0	2	18		59	40
+7	0	2	19		58	41
+7	0	2	20		59	41
+7	0	2	21		58	42
+7	0	2	22		-1	-1
+7	0	2	23		59	42
+7	0	2	24		58	43
+7	0	2	25		59	43
+7	0	2	26		58	44
+7	0	2	27		59	44
+7	0	2	28		58	45
+7	0	2	29		59	45
+7	0	2	30		58	46
+7	0	2	31		59	46
+7	0	2	32		58	47
+7	0	2	33		59	47
+7	0	2	34		58	48
+7	0	2	35		59	48
+7	0	2	36		58	49
+7	0	2	37		59	49
+7	0	2	38		58	50
+7	0	2	39		59	50
+7	0	2	40		58	51
+7	0	2	41		59	51
+7	0	2	42		58	52
+7	0	2	43		59	52
+7	0	2	44		58	53
+7	0	2	45		-1	-1
+7	0	2	46		59	53
+7	0	2	47		58	54
+7	0	2	48		59	54
+7	0	2	49		58	55
+7	0	2	50		59	55
+7	0	2	51		58	56
+7	0	2	52		59	56
+7	0	2	53		58	57
+7	0	2	54		59	57
+7	0	2	55		58	58
+7	0	2	56		-1	-1
+7	0	2	57		59	58
+7	0	2	58		58	59
+7	0	2	59		59	59
+7	0	2	60		58	60
+7	0	2	61		59	60
+7	0	2	62		58	61
+7	0	2	63		59	61
+7	0	2	64		58	62
+7	0	2	65		59	62
+7	0	2	66		58	63
+7	0	2	67		59	63
+7	0	3	0		58	0
+7	0	3	1		59	0
+7	0	3	2		58	1
+7	0	3	3		59	1
+7	0	3	4		58	2
+7	0	3	5		59	2
+7	0	3	6		58	3
+7	0	3	7		59	3
+7	0	3	8		58	4
+7	0	3	9		59	4
+7	0	3	10		58	5
+7	0	3	11		-1	-1
+7	0	3	12		59	5
+7	0	3	13		58	6
+7	0	3	14		59	6
+7	0	3	15		58	7
+7	0	3	16		59	7
+7	0	3	17		58	8
+7	0	3	18		59	8
+7	0	3	19		58	9
+7	0	3	20		59	9
+7	0	3	21		58	10
+7	0	3	22		-1	-1
+7	0	3	23		59	10
+7	0	3	24		58	11
+7	0	3	25		59	11
+7	0	3	26		58	12
+7	0	3	27		59	12
+7	0	3	28		58	13
+7	0	3	29		59	13
+7	0	3	30		58	14
+7	0	3	31		59	14
+7	0	3	32		58	15
+7	0	3	33		59	15
+7	0	3	34		58	16
+7	0	3	35		59	16
+7	0	3	36		58	17
+7	0	3	37		59	17
+7	0	3	38		58	18
+7	0	3	39		59	18
+7	0	3	40		58	19
+7	0	3	41		59	19
+7	0	3	42		58	20
+7	0	3	43		59	20
+7	0	3	44		58	21
+7	0	3	45		-1	-1
+7	0	3	46		59	21
+7	0	3	47		58	22
+7	0	3	48		59	22
+7	0	3	49		58	23
+7	0	3	50		59	23
+7	0	3	51		58	24
+7	0	3	52		59	24
+7	0	3	53		58	25
+7	0	3	54		59	25
+7	0	3	55		58	26
+7	0	3	56		-1	-1
+7	0	3	57		59	26
+7	0	3	58		58	27
+7	0	3	59		59	27
+7	0	3	60		58	28
+7	0	3	61		59	28
+7	0	3	62		58	29
+7	0	3	63		59	29
+7	0	3	64		58	30
+7	0	3	65		59	30
+7	0	3	66		58	31
+7	0	3	67		59	31
+7	1	0	0		59	95
+7	1	0	1		58	95
+7	1	0	2		59	94
+7	1	0	3		58	94
+7	1	0	4		59	93
+7	1	0	5		58	93
+7	1	0	6		59	92
+7	1	0	7		58	92
+7	1	0	8		59	91
+7	1	0	9		58	91
+7	1	0	10		59	90
+7	1	0	11		-1	-1
+7	1	0	12		58	90
+7	1	0	13		59	89
+7	1	0	14		58	89
+7	1	0	15		59	88
+7	1	0	16		58	88
+7	1	0	17		59	87
+7	1	0	18		58	87
+7	1	0	19		59	86
+7	1	0	20		58	86
+7	1	0	21		59	85
+7	1	0	22		-1	-1
+7	1	0	23		58	85
+7	1	0	24		59	84
+7	1	0	25		58	84
+7	1	0	26		59	83
+7	1	0	27		58	83
+7	1	0	28		59	82
+7	1	0	29		58	82
+7	1	0	30		59	81
+7	1	0	31		58	81
+7	1	0	32		59	80
+7	1	0	33		58	80
+7	1	0	34		59	79
+7	1	0	35		58	79
+7	1	0	36		59	78
+7	1	0	37		58	78
+7	1	0	38		59	77
+7	1	0	39		58	77
+7	1	0	40		59	76
+7	1	0	41		58	76
+7	1	0	42		59	75
+7	1	0	43		58	75
+7	1	0	44		59	74
+7	1	0	45		-1	-1
+7	1	0	46		58	74
+7	1	0	47		59	73
+7	1	0	48		58	73
+7	1	0	49		59	72
+7	1	0	50		58	72
+7	1	0	51		59	71
+7	1	0	52		58	71
+7	1	0	53		59	70
+7	1	0	54		58	70
+7	1	0	55		59	69
+7	1	0	56		-1	-1
+7	1	0	57		58	69
+7	1	0	58		59	68
+7	1	0	59		58	68
+7	1	0	60		59	67
+7	1	0	61		58	67
+7	1	0	62		59	66
+7	1	0	63		58	66
+7	1	0	64		59	65
+7	1	0	65		58	65
+7	1	0	66		59	64
+7	1	0	67		58	64
+7	1	1	0		59	127
+7	1	1	1		58	127
+7	1	1	2		59	126
+7	1	1	3		58	126
+7	1	1	4		59	125
+7	1	1	5		58	125
+7	1	1	6		59	124
+7	1	1	7		58	124
+7	1	1	8		59	123
+7	1	1	9		58	123
+7	1	1	10		59	122
+7	1	1	11		-1	-1
+7	1	1	12		58	122
+7	1	1	13		59	121
+7	1	1	14		58	121
+7	1	1	15		59	120
+7	1	1	16		58	120
+7	1	1	17		59	119
+7	1	1	18		58	119
+7	1	1	19		59	118
+7	1	1	20		58	118
+7	1	1	21		59	117
+7	1	1	22		-1	-1
+7	1	1	23		58	117
+7	1	1	24		59	116
+7	1	1	25		58	116
+7	1	1	26		59	115
+7	1	1	27		58	115
+7	1	1	28		59	114
+7	1	1	29		58	114
+7	1	1	30		59	113
+7	1	1	31		58	113
+7	1	1	32		59	112
+7	1	1	33		58	112
+7	1	1	34		59	111
+7	1	1	35		58	111
+7	1	1	36		59	110
+7	1	1	37		58	110
+7	1	1	38		59	109
+7	1	1	39		58	109
+7	1	1	40		59	108
+7	1	1	41		58	108
+7	1	1	42		59	107
+7	1	1	43		58	107
+7	1	1	44		59	106
+7	1	1	45		-1	-1
+7	1	1	46		58	106
+7	1	1	47		59	105
+7	1	1	48		58	105
+7	1	1	49		59	104
+7	1	1	50		58	104
+7	1	1	51		59	103
+7	1	1	52		58	103
+7	1	1	53		59	102
+7	1	1	54		58	102
+7	1	1	55		59	101
+7	1	1	56		-1	-1
+7	1	1	57		58	101
+7	1	1	58		59	100
+7	1	1	59		58	100
+7	1	1	60		59	99
+7	1	1	61		58	99
+7	1	1	62		59	98
+7	1	1	63		58	98
+7	1	1	64		59	97
+7	1	1	65		58	97
+7	1	1	66		59	96
+7	1	1	67		58	96
+7	1	2	0		57	95
+7	1	2	1		56	95
+7	1	2	2		57	94
+7	1	2	3		56	94
+7	1	2	4		57	93
+7	1	2	5		56	93
+7	1	2	6		57	92
+7	1	2	7		56	92
+7	1	2	8		57	91
+7	1	2	9		56	91
+7	1	2	10		57	90
+7	1	2	11		-1	-1
+7	1	2	12		56	90
+7	1	2	13		57	89
+7	1	2	14		56	89
+7	1	2	15		57	88
+7	1	2	16		56	88
+7	1	2	17		57	87
+7	1	2	18		56	87
+7	1	2	19		57	86
+7	1	2	20		56	86
+7	1	2	21		57	85
+7	1	2	22		-1	-1
+7	1	2	23		56	85
+7	1	2	24		57	84
+7	1	2	25		56	84
+7	1	2	26		57	83
+7	1	2	27		56	83
+7	1	2	28		57	82
+7	1	2	29		56	82
+7	1	2	30		57	81
+7	1	2	31		56	81
+7	1	2	32		57	80
+7	1	2	33		56	80
+7	1	2	34		57	79
+7	1	2	35		56	79
+7	1	2	36		57	78
+7	1	2	37		56	78
+7	1	2	38		57	77
+7	1	2	39		56	77
+7	1	2	40		57	76
+7	1	2	41		56	76
+7	1	2	42		57	75
+7	1	2	43		56	75
+7	1	2	44		57	74
+7	1	2	45		-1	-1
+7	1	2	46		56	74
+7	1	2	47		57	73
+7	1	2	48		56	73
+7	1	2	49		57	72
+7	1	2	50		56	72
+7	1	2	51		57	71
+7	1	2	52		56	71
+7	1	2	53		57	70
+7	1	2	54		56	70
+7	1	2	55		57	69
+7	1	2	56		-1	-1
+7	1	2	57		56	69
+7	1	2	58		57	68
+7	1	2	59		56	68
+7	1	2	60		57	67
+7	1	2	61		56	67
+7	1	2	62		57	66
+7	1	2	63		56	66
+7	1	2	64		57	65
+7	1	2	65		56	65
+7	1	2	66		57	64
+7	1	2	67		56	64
+7	1	3	0		57	127
+7	1	3	1		56	127
+7	1	3	2		57	126
+7	1	3	3		56	126
+7	1	3	4		57	125
+7	1	3	5		56	125
+7	1	3	6		57	124
+7	1	3	7		56	124
+7	1	3	8		57	123
+7	1	3	9		56	123
+7	1	3	10		57	122
+7	1	3	11		-1	-1
+7	1	3	12		56	122
+7	1	3	13		57	121
+7	1	3	14		56	121
+7	1	3	15		57	120
+7	1	3	16		56	120
+7	1	3	17		57	119
+7	1	3	18		56	119
+7	1	3	19		57	118
+7	1	3	20		56	118
+7	1	3	21		57	117
+7	1	3	22		-1	-1
+7	1	3	23		56	117
+7	1	3	24		57	116
+7	1	3	25		56	116
+7	1	3	26		57	115
+7	1	3	27		56	115
+7	1	3	28		57	114
+7	1	3	29		56	114
+7	1	3	30		57	113
+7	1	3	31		56	113
+7	1	3	32		57	112
+7	1	3	33		56	112
+7	1	3	34		57	111
+7	1	3	35		56	111
+7	1	3	36		57	110
+7	1	3	37		56	110
+7	1	3	38		57	109
+7	1	3	39		56	109
+7	1	3	40		57	108
+7	1	3	41		56	108
+7	1	3	42		57	107
+7	1	3	43		56	107
+7	1	3	44		57	106
+7	1	3	45		-1	-1
+7	1	3	46		56	106
+7	1	3	47		57	105
+7	1	3	48		56	105
+7	1	3	49		57	104
+7	1	3	50		56	104
+7	1	3	51		57	103
+7	1	3	52		56	103
+7	1	3	53		57	102
+7	1	3	54		56	102
+7	1	3	55		57	101
+7	1	3	56		-1	-1
+7	1	3	57		56	101
+7	1	3	58		57	100
+7	1	3	59		56	100
+7	1	3	60		57	99
+7	1	3	61		56	99
+7	1	3	62		57	98
+7	1	3	63		56	98
+7	1	3	64		57	97
+7	1	3	65		56	97
+7	1	3	66		57	96
+7	1	3	67		56	96
+7	2	0	0		60	32
+7	2	0	1		61	32
+7	2	0	2		60	33
+7	2	0	3		61	33
+7	2	0	4		60	34
+7	2	0	5		61	34
+7	2	0	6		60	35
+7	2	0	7		61	35
+7	2	0	8		60	36
+7	2	0	9		61	36
+7	2	0	10		60	37
+7	2	0	11		-1	-1
+7	2	0	12		61	37
+7	2	0	13		60	38
+7	2	0	14		61	38
+7	2	0	15		60	39
+7	2	0	16		61	39
+7	2	0	17		60	40
+7	2	0	18		61	40
+7	2	0	19		60	41
+7	2	0	20		61	41
+7	2	0	21		60	42
+7	2	0	22		-1	-1
+7	2	0	23		61	42
+7	2	0	24		60	43
+7	2	0	25		61	43
+7	2	0	26		60	44
+7	2	0	27		61	44
+7	2	0	28		60	45
+7	2	0	29		61	45
+7	2	0	30		60	46
+7	2	0	31		61	46
+7	2	0	32		60	47
+7	2	0	33		61	47
+7	2	0	34		60	48
+7	2	0	35		61	48
+7	2	0	36		60	49
+7	2	0	37		61	49
+7	2	0	38		60	50
+7	2	0	39		61	50
+7	2	0	40		60	51
+7	2	0	41		61	51
+7	2	0	42		60	52
+7	2	0	43		61	52
+7	2	0	44		60	53
+7	2	0	45		-1	-1
+7	2	0	46		61	53
+7	2	0	47		60	54
+7	2	0	48		61	54
+7	2	0	49		60	55
+7	2	0	50		61	55
+7	2	0	51		60	56
+7	2	0	52		61	56
+7	2	0	53		60	57
+7	2	0	54		61	57
+7	2	0	55		60	58
+7	2	0	56		-1	-1
+7	2	0	57		61	58
+7	2	0	58		60	59
+7	2	0	59		61	59
+7	2	0	60		60	60
+7	2	0	61		61	60
+7	2	0	62		60	61
+7	2	0	63		61	61
+7	2	0	64		60	62
+7	2	0	65		61	62
+7	2	0	66		60	63
+7	2	0	67		61	63
+7	2	1	0		60	0
+7	2	1	1		61	0
+7	2	1	2		60	1
+7	2	1	3		61	1
+7	2	1	4		60	2
+7	2	1	5		61	2
+7	2	1	6		60	3
+7	2	1	7		61	3
+7	2	1	8		60	4
+7	2	1	9		61	4
+7	2	1	10		60	5
+7	2	1	11		-1	-1
+7	2	1	12		61	5
+7	2	1	13		60	6
+7	2	1	14		61	6
+7	2	1	15		60	7
+7	2	1	16		61	7
+7	2	1	17		60	8
+7	2	1	18		61	8
+7	2	1	19		60	9
+7	2	1	20		61	9
+7	2	1	21		60	10
+7	2	1	22		-1	-1
+7	2	1	23		61	10
+7	2	1	24		60	11
+7	2	1	25		61	11
+7	2	1	26		60	12
+7	2	1	27		61	12
+7	2	1	28		60	13
+7	2	1	29		61	13
+7	2	1	30		60	14
+7	2	1	31		61	14
+7	2	1	32		60	15
+7	2	1	33		61	15
+7	2	1	34		60	16
+7	2	1	35		61	16
+7	2	1	36		60	17
+7	2	1	37		61	17
+7	2	1	38		60	18
+7	2	1	39		61	18
+7	2	1	40		60	19
+7	2	1	41		61	19
+7	2	1	42		60	20
+7	2	1	43		61	20
+7	2	1	44		60	21
+7	2	1	45		-1	-1
+7	2	1	46		61	21
+7	2	1	47		60	22
+7	2	1	48		61	22
+7	2	1	49		60	23
+7	2	1	50		61	23
+7	2	1	51		60	24
+7	2	1	52		61	24
+7	2	1	53		60	25
+7	2	1	54		61	25
+7	2	1	55		60	26
+7	2	1	56		-1	-1
+7	2	1	57		61	26
+7	2	1	58		60	27
+7	2	1	59		61	27
+7	2	1	60		60	28
+7	2	1	61		61	28
+7	2	1	62		60	29
+7	2	1	63		61	29
+7	2	1	64		60	30
+7	2	1	65		61	30
+7	2	1	66		60	31
+7	2	1	67		61	31
+7	2	2	0		62	32
+7	2	2	1		63	32
+7	2	2	2		62	33
+7	2	2	3		63	33
+7	2	2	4		62	34
+7	2	2	5		63	34
+7	2	2	6		62	35
+7	2	2	7		63	35
+7	2	2	8		62	36
+7	2	2	9		63	36
+7	2	2	10		62	37
+7	2	2	11		-1	-1
+7	2	2	12		63	37
+7	2	2	13		62	38
+7	2	2	14		63	38
+7	2	2	15		62	39
+7	2	2	16		63	39
+7	2	2	17		62	40
+7	2	2	18		63	40
+7	2	2	19		62	41
+7	2	2	20		63	41
+7	2	2	21		62	42
+7	2	2	22		-1	-1
+7	2	2	23		63	42
+7	2	2	24		62	43
+7	2	2	25		63	43
+7	2	2	26		62	44
+7	2	2	27		63	44
+7	2	2	28		62	45
+7	2	2	29		63	45
+7	2	2	30		62	46
+7	2	2	31		63	46
+7	2	2	32		62	47
+7	2	2	33		63	47
+7	2	2	34		62	48
+7	2	2	35		63	48
+7	2	2	36		62	49
+7	2	2	37		63	49
+7	2	2	38		62	50
+7	2	2	39		63	50
+7	2	2	40		62	51
+7	2	2	41		63	51
+7	2	2	42		62	52
+7	2	2	43		63	52
+7	2	2	44		62	53
+7	2	2	45		-1	-1
+7	2	2	46		63	53
+7	2	2	47		62	54
+7	2	2	48		63	54
+7	2	2	49		62	55
+7	2	2	50		63	55
+7	2	2	51		62	56
+7	2	2	52		63	56
+7	2	2	53		62	57
+7	2	2	54		63	57
+7	2	2	55		62	58
+7	2	2	56		-1	-1
+7	2	2	57		63	58
+7	2	2	58		62	59
+7	2	2	59		63	59
+7	2	2	60		62	60
+7	2	2	61		63	60
+7	2	2	62		62	61
+7	2	2	63		63	61
+7	2	2	64		62	62
+7	2	2	65		63	62
+7	2	2	66		62	63
+7	2	2	67		63	63
+7	2	3	0		62	0
+7	2	3	1		63	0
+7	2	3	2		62	1
+7	2	3	3		63	1
+7	2	3	4		62	2
+7	2	3	5		63	2
+7	2	3	6		62	3
+7	2	3	7		63	3
+7	2	3	8		62	4
+7	2	3	9		63	4
+7	2	3	10		62	5
+7	2	3	11		-1	-1
+7	2	3	12		63	5
+7	2	3	13		62	6
+7	2	3	14		63	6
+7	2	3	15		62	7
+7	2	3	16		63	7
+7	2	3	17		62	8
+7	2	3	18		63	8
+7	2	3	19		62	9
+7	2	3	20		63	9
+7	2	3	21		62	10
+7	2	3	22		-1	-1
+7	2	3	23		63	10
+7	2	3	24		62	11
+7	2	3	25		63	11
+7	2	3	26		62	12
+7	2	3	27		63	12
+7	2	3	28		62	13
+7	2	3	29		63	13
+7	2	3	30		62	14
+7	2	3	31		63	14
+7	2	3	32		62	15
+7	2	3	33		63	15
+7	2	3	34		62	16
+7	2	3	35		63	16
+7	2	3	36		62	17
+7	2	3	37		63	17
+7	2	3	38		62	18
+7	2	3	39		63	18
+7	2	3	40		62	19
+7	2	3	41		63	19
+7	2	3	42		62	20
+7	2	3	43		63	20
+7	2	3	44		62	21
+7	2	3	45		-1	-1
+7	2	3	46		63	21
+7	2	3	47		62	22
+7	2	3	48		63	22
+7	2	3	49		62	23
+7	2	3	50		63	23
+7	2	3	51		62	24
+7	2	3	52		63	24
+7	2	3	53		62	25
+7	2	3	54		63	25
+7	2	3	55		62	26
+7	2	3	56		-1	-1
+7	2	3	57		63	26
+7	2	3	58		62	27
+7	2	3	59		63	27
+7	2	3	60		62	28
+7	2	3	61		63	28
+7	2	3	62		62	29
+7	2	3	63		63	29
+7	2	3	64		62	30
+7	2	3	65		63	30
+7	2	3	66		62	31
+7	2	3	67		63	31
+7	3	0	0		63	95
+7	3	0	1		62	95
+7	3	0	2		63	94
+7	3	0	3		62	94
+7	3	0	4		63	93
+7	3	0	5		62	93
+7	3	0	6		63	92
+7	3	0	7		62	92
+7	3	0	8		63	91
+7	3	0	9		62	91
+7	3	0	10		63	90
+7	3	0	11		-1	-1
+7	3	0	12		62	90
+7	3	0	13		63	89
+7	3	0	14		62	89
+7	3	0	15		63	88
+7	3	0	16		62	88
+7	3	0	17		63	87
+7	3	0	18		62	87
+7	3	0	19		63	86
+7	3	0	20		62	86
+7	3	0	21		63	85
+7	3	0	22		-1	-1
+7	3	0	23		62	85
+7	3	0	24		63	84
+7	3	0	25		62	84
+7	3	0	26		63	83
+7	3	0	27		62	83
+7	3	0	28		63	82
+7	3	0	29		62	82
+7	3	0	30		63	81
+7	3	0	31		62	81
+7	3	0	32		63	80
+7	3	0	33		62	80
+7	3	0	34		63	79
+7	3	0	35		62	79
+7	3	0	36		63	78
+7	3	0	37		62	78
+7	3	0	38		63	77
+7	3	0	39		62	77
+7	3	0	40		63	76
+7	3	0	41		62	76
+7	3	0	42		63	75
+7	3	0	43		62	75
+7	3	0	44		63	74
+7	3	0	45		-1	-1
+7	3	0	46		62	74
+7	3	0	47		63	73
+7	3	0	48		62	73
+7	3	0	49		63	72
+7	3	0	50		62	72
+7	3	0	51		63	71
+7	3	0	52		62	71
+7	3	0	53		63	70
+7	3	0	54		62	70
+7	3	0	55		63	69
+7	3	0	56		-1	-1
+7	3	0	57		62	69
+7	3	0	58		63	68
+7	3	0	59		62	68
+7	3	0	60		63	67
+7	3	0	61		62	67
+7	3	0	62		63	66
+7	3	0	63		62	66
+7	3	0	64		63	65
+7	3	0	65		62	65
+7	3	0	66		63	64
+7	3	0	67		62	64
+7	3	1	0		63	127
+7	3	1	1		62	127
+7	3	1	2		63	126
+7	3	1	3		62	126
+7	3	1	4		63	125
+7	3	1	5		62	125
+7	3	1	6		63	124
+7	3	1	7		62	124
+7	3	1	8		63	123
+7	3	1	9		62	123
+7	3	1	10		63	122
+7	3	1	11		-1	-1
+7	3	1	12		62	122
+7	3	1	13		63	121
+7	3	1	14		62	121
+7	3	1	15		63	120
+7	3	1	16		62	120
+7	3	1	17		63	119
+7	3	1	18		62	119
+7	3	1	19		63	118
+7	3	1	20		62	118
+7	3	1	21		63	117
+7	3	1	22		-1	-1
+7	3	1	23		62	117
+7	3	1	24		63	116
+7	3	1	25		62	116
+7	3	1	26		63	115
+7	3	1	27		62	115
+7	3	1	28		63	114
+7	3	1	29		62	114
+7	3	1	30		63	113
+7	3	1	31		62	113
+7	3	1	32		63	112
+7	3	1	33		62	112
+7	3	1	34		63	111
+7	3	1	35		62	111
+7	3	1	36		63	110
+7	3	1	37		62	110
+7	3	1	38		63	109
+7	3	1	39		62	109
+7	3	1	40		63	108
+7	3	1	41		62	108
+7	3	1	42		63	107
+7	3	1	43		62	107
+7	3	1	44		63	106
+7	3	1	45		-1	-1
+7	3	1	46		62	106
+7	3	1	47		63	105
+7	3	1	48		62	105
+7	3	1	49		63	104
+7	3	1	50		62	104
+7	3	1	51		63	103
+7	3	1	52		62	103
+7	3	1	53		63	102
+7	3	1	54		62	102
+7	3	1	55		63	101
+7	3	1	56		-1	-1
+7	3	1	57		62	101
+7	3	1	58		63	100
+7	3	1	59		62	100
+7	3	1	60		63	99
+7	3	1	61		62	99
+7	3	1	62		63	98
+7	3	1	63		62	98
+7	3	1	64		63	97
+7	3	1	65		62	97
+7	3	1	66		63	96
+7	3	1	67		62	96
+7	3	2	0		61	95
+7	3	2	1		60	95
+7	3	2	2		61	94
+7	3	2	3		60	94
+7	3	2	4		61	93
+7	3	2	5		60	93
+7	3	2	6		61	92
+7	3	2	7		60	92
+7	3	2	8		61	91
+7	3	2	9		60	91
+7	3	2	10		61	90
+7	3	2	11		-1	-1
+7	3	2	12		60	90
+7	3	2	13		61	89
+7	3	2	14		60	89
+7	3	2	15		61	88
+7	3	2	16		60	88
+7	3	2	17		61	87
+7	3	2	18		60	87
+7	3	2	19		61	86
+7	3	2	20		60	86
+7	3	2	21		61	85
+7	3	2	22		-1	-1
+7	3	2	23		60	85
+7	3	2	24		61	84
+7	3	2	25		60	84
+7	3	2	26		61	83
+7	3	2	27		60	83
+7	3	2	28		61	82
+7	3	2	29		60	82
+7	3	2	30		61	81
+7	3	2	31		60	81
+7	3	2	32		61	80
+7	3	2	33		60	80
+7	3	2	34		61	79
+7	3	2	35		60	79
+7	3	2	36		61	78
+7	3	2	37		60	78
+7	3	2	38		61	77
+7	3	2	39		60	77
+7	3	2	40		61	76
+7	3	2	41		60	76
+7	3	2	42		61	75
+7	3	2	43		60	75
+7	3	2	44		61	74
+7	3	2	45		-1	-1
+7	3	2	46		60	74
+7	3	2	47		61	73
+7	3	2	48		60	73
+7	3	2	49		61	72
+7	3	2	50		60	72
+7	3	2	51		61	71
+7	3	2	52		60	71
+7	3	2	53		61	70
+7	3	2	54		60	70
+7	3	2	55		61	69
+7	3	2	56		-1	-1
+7	3	2	57		60	69
+7	3	2	58		61	68
+7	3	2	59		60	68
+7	3	2	60		61	67
+7	3	2	61		60	67
+7	3	2	62		61	66
+7	3	2	63		60	66
+7	3	2	64		61	65
+7	3	2	65		60	65
+7	3	2	66		61	64
+7	3	2	67		60	64
+7	3	3	0		61	127
+7	3	3	1		60	127
+7	3	3	2		61	126
+7	3	3	3		60	126
+7	3	3	4		61	125
+7	3	3	5		60	125
+7	3	3	6		61	124
+7	3	3	7		60	124
+7	3	3	8		61	123
+7	3	3	9		60	123
+7	3	3	10		61	122
+7	3	3	11		-1	-1
+7	3	3	12		60	122
+7	3	3	13		61	121
+7	3	3	14		60	121
+7	3	3	15		61	120
+7	3	3	16		60	120
+7	3	3	17		61	119
+7	3	3	18		60	119
+7	3	3	19		61	118
+7	3	3	20		60	118
+7	3	3	21		61	117
+7	3	3	22		-1	-1
+7	3	3	23		60	117
+7	3	3	24		61	116
+7	3	3	25		60	116
+7	3	3	26		61	115
+7	3	3	27		60	115
+7	3	3	28		61	114
+7	3	3	29		60	114
+7	3	3	30		61	113
+7	3	3	31		60	113
+7	3	3	32		61	112
+7	3	3	33		60	112
+7	3	3	34		61	111
+7	3	3	35		60	111
+7	3	3	36		61	110
+7	3	3	37		60	110
+7	3	3	38		61	109
+7	3	3	39		60	109
+7	3	3	40		61	108
+7	3	3	41		60	108
+7	3	3	42		61	107
+7	3	3	43		60	107
+7	3	3	44		61	106
+7	3	3	45		-1	-1
+7	3	3	46		60	106
+7	3	3	47		61	105
+7	3	3	48		60	105
+7	3	3	49		61	104
+7	3	3	50		60	104
+7	3	3	51		61	103
+7	3	3	52		60	103
+7	3	3	53		61	102
+7	3	3	54		60	102
+7	3	3	55		61	101
+7	3	3	56		-1	-1
+7	3	3	57		60	101
+7	3	3	58		61	100
+7	3	3	59		60	100
+7	3	3	60		61	99
+7	3	3	61		60	99
+7	3	3	62		61	98
+7	3	3	63		60	98
+7	3	3	64		61	97
+7	3	3	65		60	97
+7	3	3	66		61	96
+7	3	3	67		60	96
+8	0	0	0		64	32
+8	0	0	1		65	32
+8	0	0	2		64	33
+8	0	0	3		65	33
+8	0	0	4		64	34
+8	0	0	5		65	34
+8	0	0	6		64	35
+8	0	0	7		65	35
+8	0	0	8		64	36
+8	0	0	9		65	36
+8	0	0	10		64	37
+8	0	0	11		-1	-1
+8	0	0	12		65	37
+8	0	0	13		64	38
+8	0	0	14		65	38
+8	0	0	15		64	39
+8	0	0	16		65	39
+8	0	0	17		64	40
+8	0	0	18		65	40
+8	0	0	19		64	41
+8	0	0	20		65	41
+8	0	0	21		64	42
+8	0	0	22		-1	-1
+8	0	0	23		65	42
+8	0	0	24		64	43
+8	0	0	25		65	43
+8	0	0	26		64	44
+8	0	0	27		65	44
+8	0	0	28		64	45
+8	0	0	29		65	45
+8	0	0	30		64	46
+8	0	0	31		65	46
+8	0	0	32		64	47
+8	0	0	33		65	47
+8	0	0	34		64	48
+8	0	0	35		65	48
+8	0	0	36		64	49
+8	0	0	37		65	49
+8	0	0	38		64	50
+8	0	0	39		65	50
+8	0	0	40		64	51
+8	0	0	41		65	51
+8	0	0	42		64	52
+8	0	0	43		65	52
+8	0	0	44		64	53
+8	0	0	45		-1	-1
+8	0	0	46		65	53
+8	0	0	47		64	54
+8	0	0	48		65	54
+8	0	0	49		64	55
+8	0	0	50		65	55
+8	0	0	51		64	56
+8	0	0	52		65	56
+8	0	0	53		64	57
+8	0	0	54		65	57
+8	0	0	55		64	58
+8	0	0	56		-1	-1
+8	0	0	57		65	58
+8	0	0	58		64	59
+8	0	0	59		65	59
+8	0	0	60		64	60
+8	0	0	61		65	60
+8	0	0	62		64	61
+8	0	0	63		65	61
+8	0	0	64		64	62
+8	0	0	65		65	62
+8	0	0	66		64	63
+8	0	0	67		65	63
+8	0	1	0		64	0
+8	0	1	1		65	0
+8	0	1	2		64	1
+8	0	1	3		65	1
+8	0	1	4		64	2
+8	0	1	5		65	2
+8	0	1	6		64	3
+8	0	1	7		65	3
+8	0	1	8		64	4
+8	0	1	9		65	4
+8	0	1	10		64	5
+8	0	1	11		-1	-1
+8	0	1	12		65	5
+8	0	1	13		64	6
+8	0	1	14		65	6
+8	0	1	15		64	7
+8	0	1	16		65	7
+8	0	1	17		64	8
+8	0	1	18		65	8
+8	0	1	19		64	9
+8	0	1	20		65	9
+8	0	1	21		64	10
+8	0	1	22		-1	-1
+8	0	1	23		65	10
+8	0	1	24		64	11
+8	0	1	25		65	11
+8	0	1	26		64	12
+8	0	1	27		65	12
+8	0	1	28		64	13
+8	0	1	29		65	13
+8	0	1	30		64	14
+8	0	1	31		65	14
+8	0	1	32		64	15
+8	0	1	33		65	15
+8	0	1	34		64	16
+8	0	1	35		65	16
+8	0	1	36		64	17
+8	0	1	37		65	17
+8	0	1	38		64	18
+8	0	1	39		65	18
+8	0	1	40		64	19
+8	0	1	41		65	19
+8	0	1	42		64	20
+8	0	1	43		65	20
+8	0	1	44		64	21
+8	0	1	45		-1	-1
+8	0	1	46		65	21
+8	0	1	47		64	22
+8	0	1	48		65	22
+8	0	1	49		64	23
+8	0	1	50		65	23
+8	0	1	51		64	24
+8	0	1	52		65	24
+8	0	1	53		64	25
+8	0	1	54		65	25
+8	0	1	55		64	26
+8	0	1	56		-1	-1
+8	0	1	57		65	26
+8	0	1	58		64	27
+8	0	1	59		65	27
+8	0	1	60		64	28
+8	0	1	61		65	28
+8	0	1	62		64	29
+8	0	1	63		65	29
+8	0	1	64		64	30
+8	0	1	65		65	30
+8	0	1	66		64	31
+8	0	1	67		65	31
+8	0	2	0		66	32
+8	0	2	1		67	32
+8	0	2	2		66	33
+8	0	2	3		67	33
+8	0	2	4		66	34
+8	0	2	5		67	34
+8	0	2	6		66	35
+8	0	2	7		67	35
+8	0	2	8		66	36
+8	0	2	9		67	36
+8	0	2	10		66	37
+8	0	2	11		-1	-1
+8	0	2	12		67	37
+8	0	2	13		66	38
+8	0	2	14		67	38
+8	0	2	15		66	39
+8	0	2	16		67	39
+8	0	2	17		66	40
+8	0	2	18		67	40
+8	0	2	19		66	41
+8	0	2	20		67	41
+8	0	2	21		66	42
+8	0	2	22		-1	-1
+8	0	2	23		67	42
+8	0	2	24		66	43
+8	0	2	25		67	43
+8	0	2	26		66	44
+8	0	2	27		67	44
+8	0	2	28		66	45
+8	0	2	29		67	45
+8	0	2	30		66	46
+8	0	2	31		67	46
+8	0	2	32		66	47
+8	0	2	33		67	47
+8	0	2	34		66	48
+8	0	2	35		67	48
+8	0	2	36		66	49
+8	0	2	37		67	49
+8	0	2	38		66	50
+8	0	2	39		67	50
+8	0	2	40		66	51
+8	0	2	41		67	51
+8	0	2	42		66	52
+8	0	2	43		67	52
+8	0	2	44		66	53
+8	0	2	45		-1	-1
+8	0	2	46		67	53
+8	0	2	47		66	54
+8	0	2	48		67	54
+8	0	2	49		66	55
+8	0	2	50		67	55
+8	0	2	51		66	56
+8	0	2	52		67	56
+8	0	2	53		66	57
+8	0	2	54		67	57
+8	0	2	55		66	58
+8	0	2	56		-1	-1
+8	0	2	57		67	58
+8	0	2	58		66	59
+8	0	2	59		67	59
+8	0	2	60		66	60
+8	0	2	61		67	60
+8	0	2	62		66	61
+8	0	2	63		67	61
+8	0	2	64		66	62
+8	0	2	65		67	62
+8	0	2	66		66	63
+8	0	2	67		67	63
+8	0	3	0		66	0
+8	0	3	1		67	0
+8	0	3	2		66	1
+8	0	3	3		67	1
+8	0	3	4		66	2
+8	0	3	5		67	2
+8	0	3	6		66	3
+8	0	3	7		67	3
+8	0	3	8		66	4
+8	0	3	9		67	4
+8	0	3	10		66	5
+8	0	3	11		-1	-1
+8	0	3	12		67	5
+8	0	3	13		66	6
+8	0	3	14		67	6
+8	0	3	15		66	7
+8	0	3	16		67	7
+8	0	3	17		66	8
+8	0	3	18		67	8
+8	0	3	19		66	9
+8	0	3	20		67	9
+8	0	3	21		66	10
+8	0	3	22		-1	-1
+8	0	3	23		67	10
+8	0	3	24		66	11
+8	0	3	25		67	11
+8	0	3	26		66	12
+8	0	3	27		67	12
+8	0	3	28		66	13
+8	0	3	29		67	13
+8	0	3	30		66	14
+8	0	3	31		67	14
+8	0	3	32		66	15
+8	0	3	33		67	15
+8	0	3	34		66	16
+8	0	3	35		67	16
+8	0	3	36		66	17
+8	0	3	37		67	17
+8	0	3	38		66	18
+8	0	3	39		67	18
+8	0	3	40		66	19
+8	0	3	41		67	19
+8	0	3	42		66	20
+8	0	3	43		67	20
+8	0	3	44		66	21
+8	0	3	45		-1	-1
+8	0	3	46		67	21
+8	0	3	47		66	22
+8	0	3	48		67	22
+8	0	3	49		66	23
+8	0	3	50		67	23
+8	0	3	51		66	24
+8	0	3	52		67	24
+8	0	3	53		66	25
+8	0	3	54		67	25
+8	0	3	55		66	26
+8	0	3	56		-1	-1
+8	0	3	57		67	26
+8	0	3	58		66	27
+8	0	3	59		67	27
+8	0	3	60		66	28
+8	0	3	61		67	28
+8	0	3	62		66	29
+8	0	3	63		67	29
+8	0	3	64		66	30
+8	0	3	65		67	30
+8	0	3	66		66	31
+8	0	3	67		67	31
+8	1	0	0		67	95
+8	1	0	1		66	95
+8	1	0	2		67	94
+8	1	0	3		66	94
+8	1	0	4		67	93
+8	1	0	5		66	93
+8	1	0	6		67	92
+8	1	0	7		66	92
+8	1	0	8		67	91
+8	1	0	9		66	91
+8	1	0	10		67	90
+8	1	0	11		-1	-1
+8	1	0	12		66	90
+8	1	0	13		67	89
+8	1	0	14		66	89
+8	1	0	15		67	88
+8	1	0	16		66	88
+8	1	0	17		67	87
+8	1	0	18		66	87
+8	1	0	19		67	86
+8	1	0	20		66	86
+8	1	0	21		67	85
+8	1	0	22		-1	-1
+8	1	0	23		66	85
+8	1	0	24		67	84
+8	1	0	25		66	84
+8	1	0	26		67	83
+8	1	0	27		66	83
+8	1	0	28		67	82
+8	1	0	29		66	82
+8	1	0	30		67	81
+8	1	0	31		66	81
+8	1	0	32		67	80
+8	1	0	33		66	80
+8	1	0	34		67	79
+8	1	0	35		66	79
+8	1	0	36		67	78
+8	1	0	37		66	78
+8	1	0	38		67	77
+8	1	0	39		66	77
+8	1	0	40		67	76
+8	1	0	41		66	76
+8	1	0	42		67	75
+8	1	0	43		66	75
+8	1	0	44		67	74
+8	1	0	45		-1	-1
+8	1	0	46		66	74
+8	1	0	47		67	73
+8	1	0	48		66	73
+8	1	0	49		67	72
+8	1	0	50		66	72
+8	1	0	51		67	71
+8	1	0	52		66	71
+8	1	0	53		67	70
+8	1	0	54		66	70
+8	1	0	55		67	69
+8	1	0	56		-1	-1
+8	1	0	57		66	69
+8	1	0	58		67	68
+8	1	0	59		66	68
+8	1	0	60		67	67
+8	1	0	61		66	67
+8	1	0	62		67	66
+8	1	0	63		66	66
+8	1	0	64		67	65
+8	1	0	65		66	65
+8	1	0	66		67	64
+8	1	0	67		66	64
+8	1	1	0		67	127
+8	1	1	1		66	127
+8	1	1	2		67	126
+8	1	1	3		66	126
+8	1	1	4		67	125
+8	1	1	5		66	125
+8	1	1	6		67	124
+8	1	1	7		66	124
+8	1	1	8		67	123
+8	1	1	9		66	123
+8	1	1	10		67	122
+8	1	1	11		-1	-1
+8	1	1	12		66	122
+8	1	1	13		67	121
+8	1	1	14		66	121
+8	1	1	15		67	120
+8	1	1	16		66	120
+8	1	1	17		67	119
+8	1	1	18		66	119
+8	1	1	19		67	118
+8	1	1	20		66	118
+8	1	1	21		67	117
+8	1	1	22		-1	-1
+8	1	1	23		66	117
+8	1	1	24		67	116
+8	1	1	25		66	116
+8	1	1	26		67	115
+8	1	1	27		66	115
+8	1	1	28		67	114
+8	1	1	29		66	114
+8	1	1	30		67	113
+8	1	1	31		66	113
+8	1	1	32		67	112
+8	1	1	33		66	112
+8	1	1	34		67	111
+8	1	1	35		66	111
+8	1	1	36		67	110
+8	1	1	37		66	110
+8	1	1	38		67	109
+8	1	1	39		66	109
+8	1	1	40		67	108
+8	1	1	41		66	108
+8	1	1	42		67	107
+8	1	1	43		66	107
+8	1	1	44		67	106
+8	1	1	45		-1	-1
+8	1	1	46		66	106
+8	1	1	47		67	105
+8	1	1	48		66	105
+8	1	1	49		67	104
+8	1	1	50		66	104
+8	1	1	51		67	103
+8	1	1	52		66	103
+8	1	1	53		67	102
+8	1	1	54		66	102
+8	1	1	55		67	101
+8	1	1	56		-1	-1
+8	1	1	57		66	101
+8	1	1	58		67	100
+8	1	1	59		66	100
+8	1	1	60		67	99
+8	1	1	61		66	99
+8	1	1	62		67	98
+8	1	1	63		66	98
+8	1	1	64		67	97
+8	1	1	65		66	97
+8	1	1	66		67	96
+8	1	1	67		66	96
+8	1	2	0		65	95
+8	1	2	1		64	95
+8	1	2	2		65	94
+8	1	2	3		64	94
+8	1	2	4		65	93
+8	1	2	5		64	93
+8	1	2	6		65	92
+8	1	2	7		64	92
+8	1	2	8		65	91
+8	1	2	9		64	91
+8	1	2	10		65	90
+8	1	2	11		-1	-1
+8	1	2	12		64	90
+8	1	2	13		65	89
+8	1	2	14		64	89
+8	1	2	15		65	88
+8	1	2	16		64	88
+8	1	2	17		65	87
+8	1	2	18		64	87
+8	1	2	19		65	86
+8	1	2	20		64	86
+8	1	2	21		65	85
+8	1	2	22		-1	-1
+8	1	2	23		64	85
+8	1	2	24		65	84
+8	1	2	25		64	84
+8	1	2	26		65	83
+8	1	2	27		64	83
+8	1	2	28		65	82
+8	1	2	29		64	82
+8	1	2	30		65	81
+8	1	2	31		64	81
+8	1	2	32		65	80
+8	1	2	33		64	80
+8	1	2	34		65	79
+8	1	2	35		64	79
+8	1	2	36		65	78
+8	1	2	37		64	78
+8	1	2	38		65	77
+8	1	2	39		64	77
+8	1	2	40		65	76
+8	1	2	41		64	76
+8	1	2	42		65	75
+8	1	2	43		64	75
+8	1	2	44		65	74
+8	1	2	45		-1	-1
+8	1	2	46		64	74
+8	1	2	47		65	73
+8	1	2	48		64	73
+8	1	2	49		65	72
+8	1	2	50		64	72
+8	1	2	51		65	71
+8	1	2	52		64	71
+8	1	2	53		65	70
+8	1	2	54		64	70
+8	1	2	55		65	69
+8	1	2	56		-1	-1
+8	1	2	57		64	69
+8	1	2	58		65	68
+8	1	2	59		64	68
+8	1	2	60		65	67
+8	1	2	61		64	67
+8	1	2	62		65	66
+8	1	2	63		64	66
+8	1	2	64		65	65
+8	1	2	65		64	65
+8	1	2	66		65	64
+8	1	2	67		64	64
+8	1	3	0		65	127
+8	1	3	1		64	127
+8	1	3	2		65	126
+8	1	3	3		64	126
+8	1	3	4		65	125
+8	1	3	5		64	125
+8	1	3	6		65	124
+8	1	3	7		64	124
+8	1	3	8		65	123
+8	1	3	9		64	123
+8	1	3	10		65	122
+8	1	3	11		-1	-1
+8	1	3	12		64	122
+8	1	3	13		65	121
+8	1	3	14		64	121
+8	1	3	15		65	120
+8	1	3	16		64	120
+8	1	3	17		65	119
+8	1	3	18		64	119
+8	1	3	19		65	118
+8	1	3	20		64	118
+8	1	3	21		65	117
+8	1	3	22		-1	-1
+8	1	3	23		64	117
+8	1	3	24		65	116
+8	1	3	25		64	116
+8	1	3	26		65	115
+8	1	3	27		64	115
+8	1	3	28		65	114
+8	1	3	29		64	114
+8	1	3	30		65	113
+8	1	3	31		64	113
+8	1	3	32		65	112
+8	1	3	33		64	112
+8	1	3	34		65	111
+8	1	3	35		64	111
+8	1	3	36		65	110
+8	1	3	37		64	110
+8	1	3	38		65	109
+8	1	3	39		64	109
+8	1	3	40		65	108
+8	1	3	41		64	108
+8	1	3	42		65	107
+8	1	3	43		64	107
+8	1	3	44		65	106
+8	1	3	45		-1	-1
+8	1	3	46		64	106
+8	1	3	47		65	105
+8	1	3	48		64	105
+8	1	3	49		65	104
+8	1	3	50		64	104
+8	1	3	51		65	103
+8	1	3	52		64	103
+8	1	3	53		65	102
+8	1	3	54		64	102
+8	1	3	55		65	101
+8	1	3	56		-1	-1
+8	1	3	57		64	101
+8	1	3	58		65	100
+8	1	3	59		64	100
+8	1	3	60		65	99
+8	1	3	61		64	99
+8	1	3	62		65	98
+8	1	3	63		64	98
+8	1	3	64		65	97
+8	1	3	65		64	97
+8	1	3	66		65	96
+8	1	3	67		64	96
+8	2	0	0		68	32
+8	2	0	1		69	32
+8	2	0	2		68	33
+8	2	0	3		69	33
+8	2	0	4		68	34
+8	2	0	5		69	34
+8	2	0	6		68	35
+8	2	0	7		69	35
+8	2	0	8		68	36
+8	2	0	9		69	36
+8	2	0	10		68	37
+8	2	0	11		-1	-1
+8	2	0	12		69	37
+8	2	0	13		68	38
+8	2	0	14		69	38
+8	2	0	15		68	39
+8	2	0	16		69	39
+8	2	0	17		68	40
+8	2	0	18		69	40
+8	2	0	19		68	41
+8	2	0	20		69	41
+8	2	0	21		68	42
+8	2	0	22		-1	-1
+8	2	0	23		69	42
+8	2	0	24		68	43
+8	2	0	25		69	43
+8	2	0	26		68	44
+8	2	0	27		69	44
+8	2	0	28		68	45
+8	2	0	29		69	45
+8	2	0	30		68	46
+8	2	0	31		69	46
+8	2	0	32		68	47
+8	2	0	33		69	47
+8	2	0	34		68	48
+8	2	0	35		69	48
+8	2	0	36		68	49
+8	2	0	37		69	49
+8	2	0	38		68	50
+8	2	0	39		69	50
+8	2	0	40		68	51
+8	2	0	41		69	51
+8	2	0	42		68	52
+8	2	0	43		69	52
+8	2	0	44		68	53
+8	2	0	45		-1	-1
+8	2	0	46		69	53
+8	2	0	47		68	54
+8	2	0	48		69	54
+8	2	0	49		68	55
+8	2	0	50		69	55
+8	2	0	51		68	56
+8	2	0	52		69	56
+8	2	0	53		68	57
+8	2	0	54		69	57
+8	2	0	55		68	58
+8	2	0	56		-1	-1
+8	2	0	57		69	58
+8	2	0	58		68	59
+8	2	0	59		69	59
+8	2	0	60		68	60
+8	2	0	61		69	60
+8	2	0	62		68	61
+8	2	0	63		69	61
+8	2	0	64		68	62
+8	2	0	65		69	62
+8	2	0	66		68	63
+8	2	0	67		69	63
+8	2	1	0		68	0
+8	2	1	1		69	0
+8	2	1	2		68	1
+8	2	1	3		69	1
+8	2	1	4		68	2
+8	2	1	5		69	2
+8	2	1	6		68	3
+8	2	1	7		69	3
+8	2	1	8		68	4
+8	2	1	9		69	4
+8	2	1	10		68	5
+8	2	1	11		-1	-1
+8	2	1	12		69	5
+8	2	1	13		68	6
+8	2	1	14		69	6
+8	2	1	15		68	7
+8	2	1	16		69	7
+8	2	1	17		68	8
+8	2	1	18		69	8
+8	2	1	19		68	9
+8	2	1	20		69	9
+8	2	1	21		68	10
+8	2	1	22		-1	-1
+8	2	1	23		69	10
+8	2	1	24		68	11
+8	2	1	25		69	11
+8	2	1	26		68	12
+8	2	1	27		69	12
+8	2	1	28		68	13
+8	2	1	29		69	13
+8	2	1	30		68	14
+8	2	1	31		69	14
+8	2	1	32		68	15
+8	2	1	33		69	15
+8	2	1	34		68	16
+8	2	1	35		69	16
+8	2	1	36		68	17
+8	2	1	37		69	17
+8	2	1	38		68	18
+8	2	1	39		69	18
+8	2	1	40		68	19
+8	2	1	41		69	19
+8	2	1	42		68	20
+8	2	1	43		69	20
+8	2	1	44		68	21
+8	2	1	45		-1	-1
+8	2	1	46		69	21
+8	2	1	47		68	22
+8	2	1	48		69	22
+8	2	1	49		68	23
+8	2	1	50		69	23
+8	2	1	51		68	24
+8	2	1	52		69	24
+8	2	1	53		68	25
+8	2	1	54		69	25
+8	2	1	55		68	26
+8	2	1	56		-1	-1
+8	2	1	57		69	26
+8	2	1	58		68	27
+8	2	1	59		69	27
+8	2	1	60		68	28
+8	2	1	61		69	28
+8	2	1	62		68	29
+8	2	1	63		69	29
+8	2	1	64		68	30
+8	2	1	65		69	30
+8	2	1	66		68	31
+8	2	1	67		69	31
+8	2	2	0		70	32
+8	2	2	1		71	32
+8	2	2	2		70	33
+8	2	2	3		71	33
+8	2	2	4		70	34
+8	2	2	5		71	34
+8	2	2	6		70	35
+8	2	2	7		71	35
+8	2	2	8		70	36
+8	2	2	9		71	36
+8	2	2	10		70	37
+8	2	2	11		-1	-1
+8	2	2	12		71	37
+8	2	2	13		70	38
+8	2	2	14		71	38
+8	2	2	15		70	39
+8	2	2	16		71	39
+8	2	2	17		70	40
+8	2	2	18		71	40
+8	2	2	19		70	41
+8	2	2	20		71	41
+8	2	2	21		70	42
+8	2	2	22		-1	-1
+8	2	2	23		71	42
+8	2	2	24		70	43
+8	2	2	25		71	43
+8	2	2	26		70	44
+8	2	2	27		71	44
+8	2	2	28		70	45
+8	2	2	29		71	45
+8	2	2	30		70	46
+8	2	2	31		71	46
+8	2	2	32		70	47
+8	2	2	33		71	47
+8	2	2	34		70	48
+8	2	2	35		71	48
+8	2	2	36		70	49
+8	2	2	37		71	49
+8	2	2	38		70	50
+8	2	2	39		71	50
+8	2	2	40		70	51
+8	2	2	41		71	51
+8	2	2	42		70	52
+8	2	2	43		71	52
+8	2	2	44		70	53
+8	2	2	45		-1	-1
+8	2	2	46		71	53
+8	2	2	47		70	54
+8	2	2	48		71	54
+8	2	2	49		70	55
+8	2	2	50		71	55
+8	2	2	51		70	56
+8	2	2	52		71	56
+8	2	2	53		70	57
+8	2	2	54		71	57
+8	2	2	55		70	58
+8	2	2	56		-1	-1
+8	2	2	57		71	58
+8	2	2	58		70	59
+8	2	2	59		71	59
+8	2	2	60		70	60
+8	2	2	61		71	60
+8	2	2	62		70	61
+8	2	2	63		71	61
+8	2	2	64		70	62
+8	2	2	65		71	62
+8	2	2	66		70	63
+8	2	2	67		71	63
+8	2	3	0		70	0
+8	2	3	1		71	0
+8	2	3	2		70	1
+8	2	3	3		71	1
+8	2	3	4		70	2
+8	2	3	5		71	2
+8	2	3	6		70	3
+8	2	3	7		71	3
+8	2	3	8		70	4
+8	2	3	9		71	4
+8	2	3	10		70	5
+8	2	3	11		-1	-1
+8	2	3	12		71	5
+8	2	3	13		70	6
+8	2	3	14		71	6
+8	2	3	15		70	7
+8	2	3	16		71	7
+8	2	3	17		70	8
+8	2	3	18		71	8
+8	2	3	19		70	9
+8	2	3	20		71	9
+8	2	3	21		70	10
+8	2	3	22		-1	-1
+8	2	3	23		71	10
+8	2	3	24		70	11
+8	2	3	25		71	11
+8	2	3	26		70	12
+8	2	3	27		71	12
+8	2	3	28		70	13
+8	2	3	29		71	13
+8	2	3	30		70	14
+8	2	3	31		71	14
+8	2	3	32		70	15
+8	2	3	33		71	15
+8	2	3	34		70	16
+8	2	3	35		71	16
+8	2	3	36		70	17
+8	2	3	37		71	17
+8	2	3	38		70	18
+8	2	3	39		71	18
+8	2	3	40		70	19
+8	2	3	41		71	19
+8	2	3	42		70	20
+8	2	3	43		71	20
+8	2	3	44		70	21
+8	2	3	45		-1	-1
+8	2	3	46		71	21
+8	2	3	47		70	22
+8	2	3	48		71	22
+8	2	3	49		70	23
+8	2	3	50		71	23
+8	2	3	51		70	24
+8	2	3	52		71	24
+8	2	3	53		70	25
+8	2	3	54		71	25
+8	2	3	55		70	26
+8	2	3	56		-1	-1
+8	2	3	57		71	26
+8	2	3	58		70	27
+8	2	3	59		71	27
+8	2	3	60		70	28
+8	2	3	61		71	28
+8	2	3	62		70	29
+8	2	3	63		71	29
+8	2	3	64		70	30
+8	2	3	65		71	30
+8	2	3	66		70	31
+8	2	3	67		71	31
+8	3	0	0		71	95
+8	3	0	1		70	95
+8	3	0	2		71	94
+8	3	0	3		70	94
+8	3	0	4		71	93
+8	3	0	5		70	93
+8	3	0	6		71	92
+8	3	0	7		70	92
+8	3	0	8		71	91
+8	3	0	9		70	91
+8	3	0	10		71	90
+8	3	0	11		-1	-1
+8	3	0	12		70	90
+8	3	0	13		71	89
+8	3	0	14		70	89
+8	3	0	15		71	88
+8	3	0	16		70	88
+8	3	0	17		71	87
+8	3	0	18		70	87
+8	3	0	19		71	86
+8	3	0	20		70	86
+8	3	0	21		71	85
+8	3	0	22		-1	-1
+8	3	0	23		70	85
+8	3	0	24		71	84
+8	3	0	25		70	84
+8	3	0	26		71	83
+8	3	0	27		70	83
+8	3	0	28		71	82
+8	3	0	29		70	82
+8	3	0	30		71	81
+8	3	0	31		70	81
+8	3	0	32		71	80
+8	3	0	33		70	80
+8	3	0	34		71	79
+8	3	0	35		70	79
+8	3	0	36		71	78
+8	3	0	37		70	78
+8	3	0	38		71	77
+8	3	0	39		70	77
+8	3	0	40		71	76
+8	3	0	41		70	76
+8	3	0	42		71	75
+8	3	0	43		70	75
+8	3	0	44		71	74
+8	3	0	45		-1	-1
+8	3	0	46		70	74
+8	3	0	47		71	73
+8	3	0	48		70	73
+8	3	0	49		71	72
+8	3	0	50		70	72
+8	3	0	51		71	71
+8	3	0	52		70	71
+8	3	0	53		71	70
+8	3	0	54		70	70
+8	3	0	55		71	69
+8	3	0	56		-1	-1
+8	3	0	57		70	69
+8	3	0	58		71	68
+8	3	0	59		70	68
+8	3	0	60		71	67
+8	3	0	61		70	67
+8	3	0	62		71	66
+8	3	0	63		70	66
+8	3	0	64		71	65
+8	3	0	65		70	65
+8	3	0	66		71	64
+8	3	0	67		70	64
+8	3	1	0		71	127
+8	3	1	1		70	127
+8	3	1	2		71	126
+8	3	1	3		70	126
+8	3	1	4		71	125
+8	3	1	5		70	125
+8	3	1	6		71	124
+8	3	1	7		70	124
+8	3	1	8		71	123
+8	3	1	9		70	123
+8	3	1	10		71	122
+8	3	1	11		-1	-1
+8	3	1	12		70	122
+8	3	1	13		71	121
+8	3	1	14		70	121
+8	3	1	15		71	120
+8	3	1	16		70	120
+8	3	1	17		71	119
+8	3	1	18		70	119
+8	3	1	19		71	118
+8	3	1	20		70	118
+8	3	1	21		71	117
+8	3	1	22		-1	-1
+8	3	1	23		70	117
+8	3	1	24		71	116
+8	3	1	25		70	116
+8	3	1	26		71	115
+8	3	1	27		70	115
+8	3	1	28		71	114
+8	3	1	29		70	114
+8	3	1	30		71	113
+8	3	1	31		70	113
+8	3	1	32		71	112
+8	3	1	33		70	112
+8	3	1	34		71	111
+8	3	1	35		70	111
+8	3	1	36		71	110
+8	3	1	37		70	110
+8	3	1	38		71	109
+8	3	1	39		70	109
+8	3	1	40		71	108
+8	3	1	41		70	108
+8	3	1	42		71	107
+8	3	1	43		70	107
+8	3	1	44		71	106
+8	3	1	45		-1	-1
+8	3	1	46		70	106
+8	3	1	47		71	105
+8	3	1	48		70	105
+8	3	1	49		71	104
+8	3	1	50		70	104
+8	3	1	51		71	103
+8	3	1	52		70	103
+8	3	1	53		71	102
+8	3	1	54		70	102
+8	3	1	55		71	101
+8	3	1	56		-1	-1
+8	3	1	57		70	101
+8	3	1	58		71	100
+8	3	1	59		70	100
+8	3	1	60		71	99
+8	3	1	61		70	99
+8	3	1	62		71	98
+8	3	1	63		70	98
+8	3	1	64		71	97
+8	3	1	65		70	97
+8	3	1	66		71	96
+8	3	1	67		70	96
+8	3	2	0		69	95
+8	3	2	1		68	95
+8	3	2	2		69	94
+8	3	2	3		68	94
+8	3	2	4		69	93
+8	3	2	5		68	93
+8	3	2	6		69	92
+8	3	2	7		68	92
+8	3	2	8		69	91
+8	3	2	9		68	91
+8	3	2	10		69	90
+8	3	2	11		-1	-1
+8	3	2	12		68	90
+8	3	2	13		69	89
+8	3	2	14		68	89
+8	3	2	15		69	88
+8	3	2	16		68	88
+8	3	2	17		69	87
+8	3	2	18		68	87
+8	3	2	19		69	86
+8	3	2	20		68	86
+8	3	2	21		69	85
+8	3	2	22		-1	-1
+8	3	2	23		68	85
+8	3	2	24		69	84
+8	3	2	25		68	84
+8	3	2	26		69	83
+8	3	2	27		68	83
+8	3	2	28		69	82
+8	3	2	29		68	82
+8	3	2	30		69	81
+8	3	2	31		68	81
+8	3	2	32		69	80
+8	3	2	33		68	80
+8	3	2	34		69	79
+8	3	2	35		68	79
+8	3	2	36		69	78
+8	3	2	37		68	78
+8	3	2	38		69	77
+8	3	2	39		68	77
+8	3	2	40		69	76
+8	3	2	41		68	76
+8	3	2	42		69	75
+8	3	2	43		68	75
+8	3	2	44		69	74
+8	3	2	45		-1	-1
+8	3	2	46		68	74
+8	3	2	47		69	73
+8	3	2	48		68	73
+8	3	2	49		69	72
+8	3	2	50		68	72
+8	3	2	51		69	71
+8	3	2	52		68	71
+8	3	2	53		69	70
+8	3	2	54		68	70
+8	3	2	55		69	69
+8	3	2	56		-1	-1
+8	3	2	57		68	69
+8	3	2	58		69	68
+8	3	2	59		68	68
+8	3	2	60		69	67
+8	3	2	61		68	67
+8	3	2	62		69	66
+8	3	2	63		68	66
+8	3	2	64		69	65
+8	3	2	65		68	65
+8	3	2	66		69	64
+8	3	2	67		68	64
+8	3	3	0		69	127
+8	3	3	1		68	127
+8	3	3	2		69	126
+8	3	3	3		68	126
+8	3	3	4		69	125
+8	3	3	5		68	125
+8	3	3	6		69	124
+8	3	3	7		68	124
+8	3	3	8		69	123
+8	3	3	9		68	123
+8	3	3	10		69	122
+8	3	3	11		-1	-1
+8	3	3	12		68	122
+8	3	3	13		69	121
+8	3	3	14		68	121
+8	3	3	15		69	120
+8	3	3	16		68	120
+8	3	3	17		69	119
+8	3	3	18		68	119
+8	3	3	19		69	118
+8	3	3	20		68	118
+8	3	3	21		69	117
+8	3	3	22		-1	-1
+8	3	3	23		68	117
+8	3	3	24		69	116
+8	3	3	25		68	116
+8	3	3	26		69	115
+8	3	3	27		68	115
+8	3	3	28		69	114
+8	3	3	29		68	114
+8	3	3	30		69	113
+8	3	3	31		68	113
+8	3	3	32		69	112
+8	3	3	33		68	112
+8	3	3	34		69	111
+8	3	3	35		68	111
+8	3	3	36		69	110
+8	3	3	37		68	110
+8	3	3	38		69	109
+8	3	3	39		68	109
+8	3	3	40		69	108
+8	3	3	41		68	108
+8	3	3	42		69	107
+8	3	3	43		68	107
+8	3	3	44		69	106
+8	3	3	45		-1	-1
+8	3	3	46		68	106
+8	3	3	47		69	105
+8	3	3	48		68	105
+8	3	3	49		69	104
+8	3	3	50		68	104
+8	3	3	51		69	103
+8	3	3	52		68	103
+8	3	3	53		69	102
+8	3	3	54		68	102
+8	3	3	55		69	101
+8	3	3	56		-1	-1
+8	3	3	57		68	101
+8	3	3	58		69	100
+8	3	3	59		68	100
+8	3	3	60		69	99
+8	3	3	61		68	99
+8	3	3	62		69	98
+8	3	3	63		68	98
+8	3	3	64		69	97
+8	3	3	65		68	97
+8	3	3	66		69	96
+8	3	3	67		68	96
+9	0	0	0		72	32
+9	0	0	1		73	32
+9	0	0	2		72	33
+9	0	0	3		73	33
+9	0	0	4		72	34
+9	0	0	5		73	34
+9	0	0	6		72	35
+9	0	0	7		73	35
+9	0	0	8		72	36
+9	0	0	9		73	36
+9	0	0	10		72	37
+9	0	0	11		-1	-1
+9	0	0	12		73	37
+9	0	0	13		72	38
+9	0	0	14		73	38
+9	0	0	15		72	39
+9	0	0	16		73	39
+9	0	0	17		72	40
+9	0	0	18		73	40
+9	0	0	19		72	41
+9	0	0	20		73	41
+9	0	0	21		72	42
+9	0	0	22		-1	-1
+9	0	0	23		73	42
+9	0	0	24		72	43
+9	0	0	25		73	43
+9	0	0	26		72	44
+9	0	0	27		73	44
+9	0	0	28		72	45
+9	0	0	29		73	45
+9	0	0	30		72	46
+9	0	0	31		73	46
+9	0	0	32		72	47
+9	0	0	33		73	47
+9	0	0	34		72	48
+9	0	0	35		73	48
+9	0	0	36		72	49
+9	0	0	37		73	49
+9	0	0	38		72	50
+9	0	0	39		73	50
+9	0	0	40		72	51
+9	0	0	41		73	51
+9	0	0	42		72	52
+9	0	0	43		73	52
+9	0	0	44		72	53
+9	0	0	45		-1	-1
+9	0	0	46		73	53
+9	0	0	47		72	54
+9	0	0	48		73	54
+9	0	0	49		72	55
+9	0	0	50		73	55
+9	0	0	51		72	56
+9	0	0	52		73	56
+9	0	0	53		72	57
+9	0	0	54		73	57
+9	0	0	55		72	58
+9	0	0	56		-1	-1
+9	0	0	57		73	58
+9	0	0	58		72	59
+9	0	0	59		73	59
+9	0	0	60		72	60
+9	0	0	61		73	60
+9	0	0	62		72	61
+9	0	0	63		73	61
+9	0	0	64		72	62
+9	0	0	65		73	62
+9	0	0	66		72	63
+9	0	0	67		73	63
+9	0	1	0		72	0
+9	0	1	1		73	0
+9	0	1	2		72	1
+9	0	1	3		73	1
+9	0	1	4		72	2
+9	0	1	5		73	2
+9	0	1	6		72	3
+9	0	1	7		73	3
+9	0	1	8		72	4
+9	0	1	9		73	4
+9	0	1	10		72	5
+9	0	1	11		-1	-1
+9	0	1	12		73	5
+9	0	1	13		72	6
+9	0	1	14		73	6
+9	0	1	15		72	7
+9	0	1	16		73	7
+9	0	1	17		72	8
+9	0	1	18		73	8
+9	0	1	19		72	9
+9	0	1	20		73	9
+9	0	1	21		72	10
+9	0	1	22		-1	-1
+9	0	1	23		73	10
+9	0	1	24		72	11
+9	0	1	25		73	11
+9	0	1	26		72	12
+9	0	1	27		73	12
+9	0	1	28		72	13
+9	0	1	29		73	13
+9	0	1	30		72	14
+9	0	1	31		73	14
+9	0	1	32		72	15
+9	0	1	33		73	15
+9	0	1	34		72	16
+9	0	1	35		73	16
+9	0	1	36		72	17
+9	0	1	37		73	17
+9	0	1	38		72	18
+9	0	1	39		73	18
+9	0	1	40		72	19
+9	0	1	41		73	19
+9	0	1	42		72	20
+9	0	1	43		73	20
+9	0	1	44		72	21
+9	0	1	45		-1	-1
+9	0	1	46		73	21
+9	0	1	47		72	22
+9	0	1	48		73	22
+9	0	1	49		72	23
+9	0	1	50		73	23
+9	0	1	51		72	24
+9	0	1	52		73	24
+9	0	1	53		72	25
+9	0	1	54		73	25
+9	0	1	55		72	26
+9	0	1	56		-1	-1
+9	0	1	57		73	26
+9	0	1	58		72	27
+9	0	1	59		73	27
+9	0	1	60		72	28
+9	0	1	61		73	28
+9	0	1	62		72	29
+9	0	1	63		73	29
+9	0	1	64		72	30
+9	0	1	65		73	30
+9	0	1	66		72	31
+9	0	1	67		73	31
+9	0	2	0		74	32
+9	0	2	1		75	32
+9	0	2	2		74	33
+9	0	2	3		75	33
+9	0	2	4		74	34
+9	0	2	5		75	34
+9	0	2	6		74	35
+9	0	2	7		75	35
+9	0	2	8		74	36
+9	0	2	9		75	36
+9	0	2	10		74	37
+9	0	2	11		-1	-1
+9	0	2	12		75	37
+9	0	2	13		74	38
+9	0	2	14		75	38
+9	0	2	15		74	39
+9	0	2	16		75	39
+9	0	2	17		74	40
+9	0	2	18		75	40
+9	0	2	19		74	41
+9	0	2	20		75	41
+9	0	2	21		74	42
+9	0	2	22		-1	-1
+9	0	2	23		75	42
+9	0	2	24		74	43
+9	0	2	25		75	43
+9	0	2	26		74	44
+9	0	2	27		75	44
+9	0	2	28		74	45
+9	0	2	29		75	45
+9	0	2	30		74	46
+9	0	2	31		75	46
+9	0	2	32		74	47
+9	0	2	33		75	47
+9	0	2	34		74	48
+9	0	2	35		75	48
+9	0	2	36		74	49
+9	0	2	37		75	49
+9	0	2	38		74	50
+9	0	2	39		75	50
+9	0	2	40		74	51
+9	0	2	41		75	51
+9	0	2	42		74	52
+9	0	2	43		75	52
+9	0	2	44		74	53
+9	0	2	45		-1	-1
+9	0	2	46		75	53
+9	0	2	47		74	54
+9	0	2	48		75	54
+9	0	2	49		74	55
+9	0	2	50		75	55
+9	0	2	51		74	56
+9	0	2	52		75	56
+9	0	2	53		74	57
+9	0	2	54		75	57
+9	0	2	55		74	58
+9	0	2	56		-1	-1
+9	0	2	57		75	58
+9	0	2	58		74	59
+9	0	2	59		75	59
+9	0	2	60		74	60
+9	0	2	61		75	60
+9	0	2	62		74	61
+9	0	2	63		75	61
+9	0	2	64		74	62
+9	0	2	65		75	62
+9	0	2	66		74	63
+9	0	2	67		75	63
+9	0	3	0		74	0
+9	0	3	1		75	0
+9	0	3	2		74	1
+9	0	3	3		75	1
+9	0	3	4		74	2
+9	0	3	5		75	2
+9	0	3	6		74	3
+9	0	3	7		75	3
+9	0	3	8		74	4
+9	0	3	9		75	4
+9	0	3	10		74	5
+9	0	3	11		-1	-1
+9	0	3	12		75	5
+9	0	3	13		74	6
+9	0	3	14		75	6
+9	0	3	15		74	7
+9	0	3	16		75	7
+9	0	3	17		74	8
+9	0	3	18		75	8
+9	0	3	19		74	9
+9	0	3	20		75	9
+9	0	3	21		74	10
+9	0	3	22		-1	-1
+9	0	3	23		75	10
+9	0	3	24		74	11
+9	0	3	25		75	11
+9	0	3	26		74	12
+9	0	3	27		75	12
+9	0	3	28		74	13
+9	0	3	29		75	13
+9	0	3	30		74	14
+9	0	3	31		75	14
+9	0	3	32		74	15
+9	0	3	33		75	15
+9	0	3	34		74	16
+9	0	3	35		75	16
+9	0	3	36		74	17
+9	0	3	37		75	17
+9	0	3	38		74	18
+9	0	3	39		75	18
+9	0	3	40		74	19
+9	0	3	41		75	19
+9	0	3	42		74	20
+9	0	3	43		75	20
+9	0	3	44		74	21
+9	0	3	45		-1	-1
+9	0	3	46		75	21
+9	0	3	47		74	22
+9	0	3	48		75	22
+9	0	3	49		74	23
+9	0	3	50		75	23
+9	0	3	51		74	24
+9	0	3	52		75	24
+9	0	3	53		74	25
+9	0	3	54		75	25
+9	0	3	55		74	26
+9	0	3	56		-1	-1
+9	0	3	57		75	26
+9	0	3	58		74	27
+9	0	3	59		75	27
+9	0	3	60		74	28
+9	0	3	61		75	28
+9	0	3	62		74	29
+9	0	3	63		75	29
+9	0	3	64		74	30
+9	0	3	65		75	30
+9	0	3	66		74	31
+9	0	3	67		75	31
+9	1	0	0		75	95
+9	1	0	1		74	95
+9	1	0	2		75	94
+9	1	0	3		74	94
+9	1	0	4		75	93
+9	1	0	5		74	93
+9	1	0	6		75	92
+9	1	0	7		74	92
+9	1	0	8		75	91
+9	1	0	9		74	91
+9	1	0	10		75	90
+9	1	0	11		-1	-1
+9	1	0	12		74	90
+9	1	0	13		75	89
+9	1	0	14		74	89
+9	1	0	15		75	88
+9	1	0	16		74	88
+9	1	0	17		75	87
+9	1	0	18		74	87
+9	1	0	19		75	86
+9	1	0	20		74	86
+9	1	0	21		75	85
+9	1	0	22		-1	-1
+9	1	0	23		74	85
+9	1	0	24		75	84
+9	1	0	25		74	84
+9	1	0	26		75	83
+9	1	0	27		74	83
+9	1	0	28		75	82
+9	1	0	29		74	82
+9	1	0	30		75	81
+9	1	0	31		74	81
+9	1	0	32		75	80
+9	1	0	33		74	80
+9	1	0	34		75	79
+9	1	0	35		74	79
+9	1	0	36		75	78
+9	1	0	37		74	78
+9	1	0	38		75	77
+9	1	0	39		74	77
+9	1	0	40		75	76
+9	1	0	41		74	76
+9	1	0	42		75	75
+9	1	0	43		74	75
+9	1	0	44		75	74
+9	1	0	45		-1	-1
+9	1	0	46		74	74
+9	1	0	47		75	73
+9	1	0	48		74	73
+9	1	0	49		75	72
+9	1	0	50		74	72
+9	1	0	51		75	71
+9	1	0	52		74	71
+9	1	0	53		75	70
+9	1	0	54		74	70
+9	1	0	55		75	69
+9	1	0	56		-1	-1
+9	1	0	57		74	69
+9	1	0	58		75	68
+9	1	0	59		74	68
+9	1	0	60		75	67
+9	1	0	61		74	67
+9	1	0	62		75	66
+9	1	0	63		74	66
+9	1	0	64		75	65
+9	1	0	65		74	65
+9	1	0	66		75	64
+9	1	0	67		74	64
+9	1	1	0		75	127
+9	1	1	1		74	127
+9	1	1	2		75	126
+9	1	1	3		74	126
+9	1	1	4		75	125
+9	1	1	5		74	125
+9	1	1	6		75	124
+9	1	1	7		74	124
+9	1	1	8		75	123
+9	1	1	9		74	123
+9	1	1	10		75	122
+9	1	1	11		-1	-1
+9	1	1	12		74	122
+9	1	1	13		75	121
+9	1	1	14		74	121
+9	1	1	15		75	120
+9	1	1	16		74	120
+9	1	1	17		75	119
+9	1	1	18		74	119
+9	1	1	19		75	118
+9	1	1	20		74	118
+9	1	1	21		75	117
+9	1	1	22		-1	-1
+9	1	1	23		74	117
+9	1	1	24		75	116
+9	1	1	25		74	116
+9	1	1	26		75	115
+9	1	1	27		74	115
+9	1	1	28		75	114
+9	1	1	29		74	114
+9	1	1	30		75	113
+9	1	1	31		74	113
+9	1	1	32		75	112
+9	1	1	33		74	112
+9	1	1	34		75	111
+9	1	1	35		74	111
+9	1	1	36		75	110
+9	1	1	37		74	110
+9	1	1	38		75	109
+9	1	1	39		74	109
+9	1	1	40		75	108
+9	1	1	41		74	108
+9	1	1	42		75	107
+9	1	1	43		74	107
+9	1	1	44		75	106
+9	1	1	45		-1	-1
+9	1	1	46		74	106
+9	1	1	47		75	105
+9	1	1	48		74	105
+9	1	1	49		75	104
+9	1	1	50		74	104
+9	1	1	51		75	103
+9	1	1	52		74	103
+9	1	1	53		75	102
+9	1	1	54		74	102
+9	1	1	55		75	101
+9	1	1	56		-1	-1
+9	1	1	57		74	101
+9	1	1	58		75	100
+9	1	1	59		74	100
+9	1	1	60		75	99
+9	1	1	61		74	99
+9	1	1	62		75	98
+9	1	1	63		74	98
+9	1	1	64		75	97
+9	1	1	65		74	97
+9	1	1	66		75	96
+9	1	1	67		74	96
+9	1	2	0		73	95
+9	1	2	1		72	95
+9	1	2	2		73	94
+9	1	2	3		72	94
+9	1	2	4		73	93
+9	1	2	5		72	93
+9	1	2	6		73	92
+9	1	2	7		72	92
+9	1	2	8		73	91
+9	1	2	9		72	91
+9	1	2	10		73	90
+9	1	2	11		-1	-1
+9	1	2	12		72	90
+9	1	2	13		73	89
+9	1	2	14		72	89
+9	1	2	15		73	88
+9	1	2	16		72	88
+9	1	2	17		73	87
+9	1	2	18		72	87
+9	1	2	19		73	86
+9	1	2	20		72	86
+9	1	2	21		73	85
+9	1	2	22		-1	-1
+9	1	2	23		72	85
+9	1	2	24		73	84
+9	1	2	25		72	84
+9	1	2	26		73	83
+9	1	2	27		72	83
+9	1	2	28		73	82
+9	1	2	29		72	82
+9	1	2	30		73	81
+9	1	2	31		72	81
+9	1	2	32		73	80
+9	1	2	33		72	80
+9	1	2	34		73	79
+9	1	2	35		72	79
+9	1	2	36		73	78
+9	1	2	37		72	78
+9	1	2	38		73	77
+9	1	2	39		72	77
+9	1	2	40		73	76
+9	1	2	41		72	76
+9	1	2	42		73	75
+9	1	2	43		72	75
+9	1	2	44		73	74
+9	1	2	45		-1	-1
+9	1	2	46		72	74
+9	1	2	47		73	73
+9	1	2	48		72	73
+9	1	2	49		73	72
+9	1	2	50		72	72
+9	1	2	51		73	71
+9	1	2	52		72	71
+9	1	2	53		73	70
+9	1	2	54		72	70
+9	1	2	55		73	69
+9	1	2	56		-1	-1
+9	1	2	57		72	69
+9	1	2	58		73	68
+9	1	2	59		72	68
+9	1	2	60		73	67
+9	1	2	61		72	67
+9	1	2	62		73	66
+9	1	2	63		72	66
+9	1	2	64		73	65
+9	1	2	65		72	65
+9	1	2	66		73	64
+9	1	2	67		72	64
+9	1	3	0		73	127
+9	1	3	1		72	127
+9	1	3	2		73	126
+9	1	3	3		72	126
+9	1	3	4		73	125
+9	1	3	5		72	125
+9	1	3	6		73	124
+9	1	3	7		72	124
+9	1	3	8		73	123
+9	1	3	9		72	123
+9	1	3	10		73	122
+9	1	3	11		-1	-1
+9	1	3	12		72	122
+9	1	3	13		73	121
+9	1	3	14		72	121
+9	1	3	15		73	120
+9	1	3	16		72	120
+9	1	3	17		73	119
+9	1	3	18		72	119
+9	1	3	19		73	118
+9	1	3	20		72	118
+9	1	3	21		73	117
+9	1	3	22		-1	-1
+9	1	3	23		72	117
+9	1	3	24		73	116
+9	1	3	25		72	116
+9	1	3	26		73	115
+9	1	3	27		72	115
+9	1	3	28		73	114
+9	1	3	29		72	114
+9	1	3	30		73	113
+9	1	3	31		72	113
+9	1	3	32		73	112
+9	1	3	33		72	112
+9	1	3	34		73	111
+9	1	3	35		72	111
+9	1	3	36		73	110
+9	1	3	37		72	110
+9	1	3	38		73	109
+9	1	3	39		72	109
+9	1	3	40		73	108
+9	1	3	41		72	108
+9	1	3	42		73	107
+9	1	3	43		72	107
+9	1	3	44		73	106
+9	1	3	45		-1	-1
+9	1	3	46		72	106
+9	1	3	47		73	105
+9	1	3	48		72	105
+9	1	3	49		73	104
+9	1	3	50		72	104
+9	1	3	51		73	103
+9	1	3	52		72	103
+9	1	3	53		73	102
+9	1	3	54		72	102
+9	1	3	55		73	101
+9	1	3	56		-1	-1
+9	1	3	57		72	101
+9	1	3	58		73	100
+9	1	3	59		72	100
+9	1	3	60		73	99
+9	1	3	61		72	99
+9	1	3	62		73	98
+9	1	3	63		72	98
+9	1	3	64		73	97
+9	1	3	65		72	97
+9	1	3	66		73	96
+9	1	3	67		72	96
+9	2	0	0		76	32
+9	2	0	1		77	32
+9	2	0	2		76	33
+9	2	0	3		77	33
+9	2	0	4		76	34
+9	2	0	5		77	34
+9	2	0	6		76	35
+9	2	0	7		77	35
+9	2	0	8		76	36
+9	2	0	9		77	36
+9	2	0	10		76	37
+9	2	0	11		-1	-1
+9	2	0	12		77	37
+9	2	0	13		76	38
+9	2	0	14		77	38
+9	2	0	15		76	39
+9	2	0	16		77	39
+9	2	0	17		76	40
+9	2	0	18		77	40
+9	2	0	19		76	41
+9	2	0	20		77	41
+9	2	0	21		76	42
+9	2	0	22		-1	-1
+9	2	0	23		77	42
+9	2	0	24		76	43
+9	2	0	25		77	43
+9	2	0	26		76	44
+9	2	0	27		77	44
+9	2	0	28		76	45
+9	2	0	29		77	45
+9	2	0	30		76	46
+9	2	0	31		77	46
+9	2	0	32		76	47
+9	2	0	33		77	47
+9	2	0	34		76	48
+9	2	0	35		77	48
+9	2	0	36		76	49
+9	2	0	37		77	49
+9	2	0	38		76	50
+9	2	0	39		77	50
+9	2	0	40		76	51
+9	2	0	41		77	51
+9	2	0	42		76	52
+9	2	0	43		77	52
+9	2	0	44		76	53
+9	2	0	45		-1	-1
+9	2	0	46		77	53
+9	2	0	47		76	54
+9	2	0	48		77	54
+9	2	0	49		76	55
+9	2	0	50		77	55
+9	2	0	51		76	56
+9	2	0	52		77	56
+9	2	0	53		76	57
+9	2	0	54		77	57
+9	2	0	55		76	58
+9	2	0	56		-1	-1
+9	2	0	57		77	58
+9	2	0	58		76	59
+9	2	0	59		77	59
+9	2	0	60		76	60
+9	2	0	61		77	60
+9	2	0	62		76	61
+9	2	0	63		77	61
+9	2	0	64		76	62
+9	2	0	65		77	62
+9	2	0	66		76	63
+9	2	0	67		77	63
+9	2	1	0		76	0
+9	2	1	1		77	0
+9	2	1	2		76	1
+9	2	1	3		77	1
+9	2	1	4		76	2
+9	2	1	5		77	2
+9	2	1	6		76	3
+9	2	1	7		77	3
+9	2	1	8		76	4
+9	2	1	9		77	4
+9	2	1	10		76	5
+9	2	1	11		-1	-1
+9	2	1	12		77	5
+9	2	1	13		76	6
+9	2	1	14		77	6
+9	2	1	15		76	7
+9	2	1	16		77	7
+9	2	1	17		76	8
+9	2	1	18		77	8
+9	2	1	19		76	9
+9	2	1	20		77	9
+9	2	1	21		76	10
+9	2	1	22		-1	-1
+9	2	1	23		77	10
+9	2	1	24		76	11
+9	2	1	25		77	11
+9	2	1	26		76	12
+9	2	1	27		77	12
+9	2	1	28		76	13
+9	2	1	29		77	13
+9	2	1	30		76	14
+9	2	1	31		77	14
+9	2	1	32		76	15
+9	2	1	33		77	15
+9	2	1	34		76	16
+9	2	1	35		77	16
+9	2	1	36		76	17
+9	2	1	37		77	17
+9	2	1	38		76	18
+9	2	1	39		77	18
+9	2	1	40		76	19
+9	2	1	41		77	19
+9	2	1	42		76	20
+9	2	1	43		77	20
+9	2	1	44		76	21
+9	2	1	45		-1	-1
+9	2	1	46		77	21
+9	2	1	47		76	22
+9	2	1	48		77	22
+9	2	1	49		76	23
+9	2	1	50		77	23
+9	2	1	51		76	24
+9	2	1	52		77	24
+9	2	1	53		76	25
+9	2	1	54		77	25
+9	2	1	55		76	26
+9	2	1	56		-1	-1
+9	2	1	57		77	26
+9	2	1	58		76	27
+9	2	1	59		77	27
+9	2	1	60		76	28
+9	2	1	61		77	28
+9	2	1	62		76	29
+9	2	1	63		77	29
+9	2	1	64		76	30
+9	2	1	65		77	30
+9	2	1	66		76	31
+9	2	1	67		77	31
+9	2	2	0		78	32
+9	2	2	1		79	32
+9	2	2	2		78	33
+9	2	2	3		79	33
+9	2	2	4		78	34
+9	2	2	5		79	34
+9	2	2	6		78	35
+9	2	2	7		79	35
+9	2	2	8		78	36
+9	2	2	9		79	36
+9	2	2	10		78	37
+9	2	2	11		-1	-1
+9	2	2	12		79	37
+9	2	2	13		78	38
+9	2	2	14		79	38
+9	2	2	15		78	39
+9	2	2	16		79	39
+9	2	2	17		78	40
+9	2	2	18		79	40
+9	2	2	19		78	41
+9	2	2	20		79	41
+9	2	2	21		78	42
+9	2	2	22		-1	-1
+9	2	2	23		79	42
+9	2	2	24		78	43
+9	2	2	25		79	43
+9	2	2	26		78	44
+9	2	2	27		79	44
+9	2	2	28		78	45
+9	2	2	29		79	45
+9	2	2	30		78	46
+9	2	2	31		79	46
+9	2	2	32		78	47
+9	2	2	33		79	47
+9	2	2	34		78	48
+9	2	2	35		79	48
+9	2	2	36		78	49
+9	2	2	37		79	49
+9	2	2	38		78	50
+9	2	2	39		79	50
+9	2	2	40		78	51
+9	2	2	41		79	51
+9	2	2	42		78	52
+9	2	2	43		79	52
+9	2	2	44		78	53
+9	2	2	45		-1	-1
+9	2	2	46		79	53
+9	2	2	47		78	54
+9	2	2	48		79	54
+9	2	2	49		78	55
+9	2	2	50		79	55
+9	2	2	51		78	56
+9	2	2	52		79	56
+9	2	2	53		78	57
+9	2	2	54		79	57
+9	2	2	55		78	58
+9	2	2	56		-1	-1
+9	2	2	57		79	58
+9	2	2	58		78	59
+9	2	2	59		79	59
+9	2	2	60		78	60
+9	2	2	61		79	60
+9	2	2	62		78	61
+9	2	2	63		79	61
+9	2	2	64		78	62
+9	2	2	65		79	62
+9	2	2	66		78	63
+9	2	2	67		79	63
+9	2	3	0		78	0
+9	2	3	1		79	0
+9	2	3	2		78	1
+9	2	3	3		79	1
+9	2	3	4		78	2
+9	2	3	5		79	2
+9	2	3	6		78	3
+9	2	3	7		79	3
+9	2	3	8		78	4
+9	2	3	9		79	4
+9	2	3	10		78	5
+9	2	3	11		-1	-1
+9	2	3	12		79	5
+9	2	3	13		78	6
+9	2	3	14		79	6
+9	2	3	15		78	7
+9	2	3	16		79	7
+9	2	3	17		78	8
+9	2	3	18		79	8
+9	2	3	19		78	9
+9	2	3	20		79	9
+9	2	3	21		78	10
+9	2	3	22		-1	-1
+9	2	3	23		79	10
+9	2	3	24		78	11
+9	2	3	25		79	11
+9	2	3	26		78	12
+9	2	3	27		79	12
+9	2	3	28		78	13
+9	2	3	29		79	13
+9	2	3	30		78	14
+9	2	3	31		79	14
+9	2	3	32		78	15
+9	2	3	33		79	15
+9	2	3	34		78	16
+9	2	3	35		79	16
+9	2	3	36		78	17
+9	2	3	37		79	17
+9	2	3	38		78	18
+9	2	3	39		79	18
+9	2	3	40		78	19
+9	2	3	41		79	19
+9	2	3	42		78	20
+9	2	3	43		79	20
+9	2	3	44		78	21
+9	2	3	45		-1	-1
+9	2	3	46		79	21
+9	2	3	47		78	22
+9	2	3	48		79	22
+9	2	3	49		78	23
+9	2	3	50		79	23
+9	2	3	51		78	24
+9	2	3	52		79	24
+9	2	3	53		78	25
+9	2	3	54		79	25
+9	2	3	55		78	26
+9	2	3	56		-1	-1
+9	2	3	57		79	26
+9	2	3	58		78	27
+9	2	3	59		79	27
+9	2	3	60		78	28
+9	2	3	61		79	28
+9	2	3	62		78	29
+9	2	3	63		79	29
+9	2	3	64		78	30
+9	2	3	65		79	30
+9	2	3	66		78	31
+9	2	3	67		79	31
+9	3	0	0		79	95
+9	3	0	1		78	95
+9	3	0	2		79	94
+9	3	0	3		78	94
+9	3	0	4		79	93
+9	3	0	5		78	93
+9	3	0	6		79	92
+9	3	0	7		78	92
+9	3	0	8		79	91
+9	3	0	9		78	91
+9	3	0	10		79	90
+9	3	0	11		-1	-1
+9	3	0	12		78	90
+9	3	0	13		79	89
+9	3	0	14		78	89
+9	3	0	15		79	88
+9	3	0	16		78	88
+9	3	0	17		79	87
+9	3	0	18		78	87
+9	3	0	19		79	86
+9	3	0	20		78	86
+9	3	0	21		79	85
+9	3	0	22		-1	-1
+9	3	0	23		78	85
+9	3	0	24		79	84
+9	3	0	25		78	84
+9	3	0	26		79	83
+9	3	0	27		78	83
+9	3	0	28		79	82
+9	3	0	29		78	82
+9	3	0	30		79	81
+9	3	0	31		78	81
+9	3	0	32		79	80
+9	3	0	33		78	80
+9	3	0	34		79	79
+9	3	0	35		78	79
+9	3	0	36		79	78
+9	3	0	37		78	78
+9	3	0	38		79	77
+9	3	0	39		78	77
+9	3	0	40		79	76
+9	3	0	41		78	76
+9	3	0	42		79	75
+9	3	0	43		78	75
+9	3	0	44		79	74
+9	3	0	45		-1	-1
+9	3	0	46		78	74
+9	3	0	47		79	73
+9	3	0	48		78	73
+9	3	0	49		79	72
+9	3	0	50		78	72
+9	3	0	51		79	71
+9	3	0	52		78	71
+9	3	0	53		79	70
+9	3	0	54		78	70
+9	3	0	55		79	69
+9	3	0	56		-1	-1
+9	3	0	57		78	69
+9	3	0	58		79	68
+9	3	0	59		78	68
+9	3	0	60		79	67
+9	3	0	61		78	67
+9	3	0	62		79	66
+9	3	0	63		78	66
+9	3	0	64		79	65
+9	3	0	65		78	65
+9	3	0	66		79	64
+9	3	0	67		78	64
+9	3	1	0		79	127
+9	3	1	1		78	127
+9	3	1	2		79	126
+9	3	1	3		78	126
+9	3	1	4		79	125
+9	3	1	5		78	125
+9	3	1	6		79	124
+9	3	1	7		78	124
+9	3	1	8		79	123
+9	3	1	9		78	123
+9	3	1	10		79	122
+9	3	1	11		-1	-1
+9	3	1	12		78	122
+9	3	1	13		79	121
+9	3	1	14		78	121
+9	3	1	15		79	120
+9	3	1	16		78	120
+9	3	1	17		79	119
+9	3	1	18		78	119
+9	3	1	19		79	118
+9	3	1	20		78	118
+9	3	1	21		79	117
+9	3	1	22		-1	-1
+9	3	1	23		78	117
+9	3	1	24		79	116
+9	3	1	25		78	116
+9	3	1	26		79	115
+9	3	1	27		78	115
+9	3	1	28		79	114
+9	3	1	29		78	114
+9	3	1	30		79	113
+9	3	1	31		78	113
+9	3	1	32		79	112
+9	3	1	33		78	112
+9	3	1	34		79	111
+9	3	1	35		78	111
+9	3	1	36		79	110
+9	3	1	37		78	110
+9	3	1	38		79	109
+9	3	1	39		78	109
+9	3	1	40		79	108
+9	3	1	41		78	108
+9	3	1	42		79	107
+9	3	1	43		78	107
+9	3	1	44		79	106
+9	3	1	45		-1	-1
+9	3	1	46		78	106
+9	3	1	47		79	105
+9	3	1	48		78	105
+9	3	1	49		79	104
+9	3	1	50		78	104
+9	3	1	51		79	103
+9	3	1	52		78	103
+9	3	1	53		79	102
+9	3	1	54		78	102
+9	3	1	55		79	101
+9	3	1	56		-1	-1
+9	3	1	57		78	101
+9	3	1	58		79	100
+9	3	1	59		78	100
+9	3	1	60		79	99
+9	3	1	61		78	99
+9	3	1	62		79	98
+9	3	1	63		78	98
+9	3	1	64		79	97
+9	3	1	65		78	97
+9	3	1	66		79	96
+9	3	1	67		78	96
+9	3	2	0		77	95
+9	3	2	1		76	95
+9	3	2	2		77	94
+9	3	2	3		76	94
+9	3	2	4		77	93
+9	3	2	5		76	93
+9	3	2	6		77	92
+9	3	2	7		76	92
+9	3	2	8		77	91
+9	3	2	9		76	91
+9	3	2	10		77	90
+9	3	2	11		-1	-1
+9	3	2	12		76	90
+9	3	2	13		77	89
+9	3	2	14		76	89
+9	3	2	15		77	88
+9	3	2	16		76	88
+9	3	2	17		77	87
+9	3	2	18		76	87
+9	3	2	19		77	86
+9	3	2	20		76	86
+9	3	2	21		77	85
+9	3	2	22		-1	-1
+9	3	2	23		76	85
+9	3	2	24		77	84
+9	3	2	25		76	84
+9	3	2	26		77	83
+9	3	2	27		76	83
+9	3	2	28		77	82
+9	3	2	29		76	82
+9	3	2	30		77	81
+9	3	2	31		76	81
+9	3	2	32		77	80
+9	3	2	33		76	80
+9	3	2	34		77	79
+9	3	2	35		76	79
+9	3	2	36		77	78
+9	3	2	37		76	78
+9	3	2	38		77	77
+9	3	2	39		76	77
+9	3	2	40		77	76
+9	3	2	41		76	76
+9	3	2	42		77	75
+9	3	2	43		76	75
+9	3	2	44		77	74
+9	3	2	45		-1	-1
+9	3	2	46		76	74
+9	3	2	47		77	73
+9	3	2	48		76	73
+9	3	2	49		77	72
+9	3	2	50		76	72
+9	3	2	51		77	71
+9	3	2	52		76	71
+9	3	2	53		77	70
+9	3	2	54		76	70
+9	3	2	55		77	69
+9	3	2	56		-1	-1
+9	3	2	57		76	69
+9	3	2	58		77	68
+9	3	2	59		76	68
+9	3	2	60		77	67
+9	3	2	61		76	67
+9	3	2	62		77	66
+9	3	2	63		76	66
+9	3	2	64		77	65
+9	3	2	65		76	65
+9	3	2	66		77	64
+9	3	2	67		76	64
+9	3	3	0		77	127
+9	3	3	1		76	127
+9	3	3	2		77	126
+9	3	3	3		76	126
+9	3	3	4		77	125
+9	3	3	5		76	125
+9	3	3	6		77	124
+9	3	3	7		76	124
+9	3	3	8		77	123
+9	3	3	9		76	123
+9	3	3	10		77	122
+9	3	3	11		-1	-1
+9	3	3	12		76	122
+9	3	3	13		77	121
+9	3	3	14		76	121
+9	3	3	15		77	120
+9	3	3	16		76	120
+9	3	3	17		77	119
+9	3	3	18		76	119
+9	3	3	19		77	118
+9	3	3	20		76	118
+9	3	3	21		77	117
+9	3	3	22		-1	-1
+9	3	3	23		76	117
+9	3	3	24		77	116
+9	3	3	25		76	116
+9	3	3	26		77	115
+9	3	3	27		76	115
+9	3	3	28		77	114
+9	3	3	29		76	114
+9	3	3	30		77	113
+9	3	3	31		76	113
+9	3	3	32		77	112
+9	3	3	33		76	112
+9	3	3	34		77	111
+9	3	3	35		76	111
+9	3	3	36		77	110
+9	3	3	37		76	110
+9	3	3	38		77	109
+9	3	3	39		76	109
+9	3	3	40		77	108
+9	3	3	41		76	108
+9	3	3	42		77	107
+9	3	3	43		76	107
+9	3	3	44		77	106
+9	3	3	45		-1	-1
+9	3	3	46		76	106
+9	3	3	47		77	105
+9	3	3	48		76	105
+9	3	3	49		77	104
+9	3	3	50		76	104
+9	3	3	51		77	103
+9	3	3	52		76	103
+9	3	3	53		77	102
+9	3	3	54		76	102
+9	3	3	55		77	101
+9	3	3	56		-1	-1
+9	3	3	57		76	101
+9	3	3	58		77	100
+9	3	3	59		76	100
+9	3	3	60		77	99
+9	3	3	61		76	99
+9	3	3	62		77	98
+9	3	3	63		76	98
+9	3	3	64		77	97
+9	3	3	65		76	97
+9	3	3	66		77	96
+9	3	3	67		76	96
+10	0	0	0		80	32
+10	0	0	1		81	32
+10	0	0	2		80	33
+10	0	0	3		81	33
+10	0	0	4		80	34
+10	0	0	5		81	34
+10	0	0	6		80	35
+10	0	0	7		81	35
+10	0	0	8		80	36
+10	0	0	9		81	36
+10	0	0	10		80	37
+10	0	0	11		-1	-1
+10	0	0	12		81	37
+10	0	0	13		80	38
+10	0	0	14		81	38
+10	0	0	15		80	39
+10	0	0	16		81	39
+10	0	0	17		80	40
+10	0	0	18		81	40
+10	0	0	19		80	41
+10	0	0	20		81	41
+10	0	0	21		80	42
+10	0	0	22		-1	-1
+10	0	0	23		81	42
+10	0	0	24		80	43
+10	0	0	25		81	43
+10	0	0	26		80	44
+10	0	0	27		81	44
+10	0	0	28		80	45
+10	0	0	29		81	45
+10	0	0	30		80	46
+10	0	0	31		81	46
+10	0	0	32		80	47
+10	0	0	33		81	47
+10	0	0	34		80	48
+10	0	0	35		81	48
+10	0	0	36		80	49
+10	0	0	37		81	49
+10	0	0	38		80	50
+10	0	0	39		81	50
+10	0	0	40		80	51
+10	0	0	41		81	51
+10	0	0	42		80	52
+10	0	0	43		81	52
+10	0	0	44		80	53
+10	0	0	45		-1	-1
+10	0	0	46		81	53
+10	0	0	47		80	54
+10	0	0	48		81	54
+10	0	0	49		80	55
+10	0	0	50		81	55
+10	0	0	51		80	56
+10	0	0	52		81	56
+10	0	0	53		80	57
+10	0	0	54		81	57
+10	0	0	55		80	58
+10	0	0	56		-1	-1
+10	0	0	57		81	58
+10	0	0	58		80	59
+10	0	0	59		81	59
+10	0	0	60		80	60
+10	0	0	61		81	60
+10	0	0	62		80	61
+10	0	0	63		81	61
+10	0	0	64		80	62
+10	0	0	65		81	62
+10	0	0	66		80	63
+10	0	0	67		81	63
+10	0	1	0		80	0
+10	0	1	1		81	0
+10	0	1	2		80	1
+10	0	1	3		81	1
+10	0	1	4		80	2
+10	0	1	5		81	2
+10	0	1	6		80	3
+10	0	1	7		81	3
+10	0	1	8		80	4
+10	0	1	9		81	4
+10	0	1	10		80	5
+10	0	1	11		-1	-1
+10	0	1	12		81	5
+10	0	1	13		80	6
+10	0	1	14		81	6
+10	0	1	15		80	7
+10	0	1	16		81	7
+10	0	1	17		80	8
+10	0	1	18		81	8
+10	0	1	19		80	9
+10	0	1	20		81	9
+10	0	1	21		80	10
+10	0	1	22		-1	-1
+10	0	1	23		81	10
+10	0	1	24		80	11
+10	0	1	25		81	11
+10	0	1	26		80	12
+10	0	1	27		81	12
+10	0	1	28		80	13
+10	0	1	29		81	13
+10	0	1	30		80	14
+10	0	1	31		81	14
+10	0	1	32		80	15
+10	0	1	33		81	15
+10	0	1	34		80	16
+10	0	1	35		81	16
+10	0	1	36		80	17
+10	0	1	37		81	17
+10	0	1	38		80	18
+10	0	1	39		81	18
+10	0	1	40		80	19
+10	0	1	41		81	19
+10	0	1	42		80	20
+10	0	1	43		81	20
+10	0	1	44		80	21
+10	0	1	45		-1	-1
+10	0	1	46		81	21
+10	0	1	47		80	22
+10	0	1	48		81	22
+10	0	1	49		80	23
+10	0	1	50		81	23
+10	0	1	51		80	24
+10	0	1	52		81	24
+10	0	1	53		80	25
+10	0	1	54		81	25
+10	0	1	55		80	26
+10	0	1	56		-1	-1
+10	0	1	57		81	26
+10	0	1	58		80	27
+10	0	1	59		81	27
+10	0	1	60		80	28
+10	0	1	61		81	28
+10	0	1	62		80	29
+10	0	1	63		81	29
+10	0	1	64		80	30
+10	0	1	65		81	30
+10	0	1	66		80	31
+10	0	1	67		81	31
+10	0	2	0		82	32
+10	0	2	1		83	32
+10	0	2	2		82	33
+10	0	2	3		83	33
+10	0	2	4		82	34
+10	0	2	5		83	34
+10	0	2	6		82	35
+10	0	2	7		83	35
+10	0	2	8		82	36
+10	0	2	9		83	36
+10	0	2	10		82	37
+10	0	2	11		-1	-1
+10	0	2	12		83	37
+10	0	2	13		82	38
+10	0	2	14		83	38
+10	0	2	15		82	39
+10	0	2	16		83	39
+10	0	2	17		82	40
+10	0	2	18		83	40
+10	0	2	19		82	41
+10	0	2	20		83	41
+10	0	2	21		82	42
+10	0	2	22		-1	-1
+10	0	2	23		83	42
+10	0	2	24		82	43
+10	0	2	25		83	43
+10	0	2	26		82	44
+10	0	2	27		83	44
+10	0	2	28		82	45
+10	0	2	29		83	45
+10	0	2	30		82	46
+10	0	2	31		83	46
+10	0	2	32		82	47
+10	0	2	33		83	47
+10	0	2	34		82	48
+10	0	2	35		83	48
+10	0	2	36		82	49
+10	0	2	37		83	49
+10	0	2	38		82	50
+10	0	2	39		83	50
+10	0	2	40		82	51
+10	0	2	41		83	51
+10	0	2	42		82	52
+10	0	2	43		83	52
+10	0	2	44		82	53
+10	0	2	45		-1	-1
+10	0	2	46		83	53
+10	0	2	47		82	54
+10	0	2	48		83	54
+10	0	2	49		82	55
+10	0	2	50		83	55
+10	0	2	51		82	56
+10	0	2	52		83	56
+10	0	2	53		82	57
+10	0	2	54		83	57
+10	0	2	55		82	58
+10	0	2	56		-1	-1
+10	0	2	57		83	58
+10	0	2	58		82	59
+10	0	2	59		83	59
+10	0	2	60		82	60
+10	0	2	61		83	60
+10	0	2	62		82	61
+10	0	2	63		83	61
+10	0	2	64		82	62
+10	0	2	65		83	62
+10	0	2	66		82	63
+10	0	2	67		83	63
+10	0	3	0		82	0
+10	0	3	1		83	0
+10	0	3	2		82	1
+10	0	3	3		83	1
+10	0	3	4		82	2
+10	0	3	5		83	2
+10	0	3	6		82	3
+10	0	3	7		83	3
+10	0	3	8		82	4
+10	0	3	9		83	4
+10	0	3	10		82	5
+10	0	3	11		-1	-1
+10	0	3	12		83	5
+10	0	3	13		82	6
+10	0	3	14		83	6
+10	0	3	15		82	7
+10	0	3	16		83	7
+10	0	3	17		82	8
+10	0	3	18		83	8
+10	0	3	19		82	9
+10	0	3	20		83	9
+10	0	3	21		82	10
+10	0	3	22		-1	-1
+10	0	3	23		83	10
+10	0	3	24		82	11
+10	0	3	25		83	11
+10	0	3	26		82	12
+10	0	3	27		83	12
+10	0	3	28		82	13
+10	0	3	29		83	13
+10	0	3	30		82	14
+10	0	3	31		83	14
+10	0	3	32		82	15
+10	0	3	33		83	15
+10	0	3	34		82	16
+10	0	3	35		83	16
+10	0	3	36		82	17
+10	0	3	37		83	17
+10	0	3	38		82	18
+10	0	3	39		83	18
+10	0	3	40		82	19
+10	0	3	41		83	19
+10	0	3	42		82	20
+10	0	3	43		83	20
+10	0	3	44		82	21
+10	0	3	45		-1	-1
+10	0	3	46		83	21
+10	0	3	47		82	22
+10	0	3	48		83	22
+10	0	3	49		82	23
+10	0	3	50		83	23
+10	0	3	51		82	24
+10	0	3	52		83	24
+10	0	3	53		82	25
+10	0	3	54		83	25
+10	0	3	55		82	26
+10	0	3	56		-1	-1
+10	0	3	57		83	26
+10	0	3	58		82	27
+10	0	3	59		83	27
+10	0	3	60		82	28
+10	0	3	61		83	28
+10	0	3	62		82	29
+10	0	3	63		83	29
+10	0	3	64		82	30
+10	0	3	65		83	30
+10	0	3	66		82	31
+10	0	3	67		83	31
+10	1	0	0		83	95
+10	1	0	1		82	95
+10	1	0	2		83	94
+10	1	0	3		82	94
+10	1	0	4		83	93
+10	1	0	5		82	93
+10	1	0	6		83	92
+10	1	0	7		82	92
+10	1	0	8		83	91
+10	1	0	9		82	91
+10	1	0	10		83	90
+10	1	0	11		-1	-1
+10	1	0	12		82	90
+10	1	0	13		83	89
+10	1	0	14		82	89
+10	1	0	15		83	88
+10	1	0	16		82	88
+10	1	0	17		83	87
+10	1	0	18		82	87
+10	1	0	19		83	86
+10	1	0	20		82	86
+10	1	0	21		83	85
+10	1	0	22		-1	-1
+10	1	0	23		82	85
+10	1	0	24		83	84
+10	1	0	25		82	84
+10	1	0	26		83	83
+10	1	0	27		82	83
+10	1	0	28		83	82
+10	1	0	29		82	82
+10	1	0	30		83	81
+10	1	0	31		82	81
+10	1	0	32		83	80
+10	1	0	33		82	80
+10	1	0	34		83	79
+10	1	0	35		82	79
+10	1	0	36		83	78
+10	1	0	37		82	78
+10	1	0	38		83	77
+10	1	0	39		82	77
+10	1	0	40		83	76
+10	1	0	41		82	76
+10	1	0	42		83	75
+10	1	0	43		82	75
+10	1	0	44		83	74
+10	1	0	45		-1	-1
+10	1	0	46		82	74
+10	1	0	47		83	73
+10	1	0	48		82	73
+10	1	0	49		83	72
+10	1	0	50		82	72
+10	1	0	51		83	71
+10	1	0	52		82	71
+10	1	0	53		83	70
+10	1	0	54		82	70
+10	1	0	55		83	69
+10	1	0	56		-1	-1
+10	1	0	57		82	69
+10	1	0	58		83	68
+10	1	0	59		82	68
+10	1	0	60		83	67
+10	1	0	61		82	67
+10	1	0	62		83	66
+10	1	0	63		82	66
+10	1	0	64		83	65
+10	1	0	65		82	65
+10	1	0	66		83	64
+10	1	0	67		82	64
+10	1	1	0		83	127
+10	1	1	1		82	127
+10	1	1	2		83	126
+10	1	1	3		82	126
+10	1	1	4		83	125
+10	1	1	5		82	125
+10	1	1	6		83	124
+10	1	1	7		82	124
+10	1	1	8		83	123
+10	1	1	9		82	123
+10	1	1	10		83	122
+10	1	1	11		-1	-1
+10	1	1	12		82	122
+10	1	1	13		83	121
+10	1	1	14		82	121
+10	1	1	15		83	120
+10	1	1	16		82	120
+10	1	1	17		83	119
+10	1	1	18		82	119
+10	1	1	19		83	118
+10	1	1	20		82	118
+10	1	1	21		83	117
+10	1	1	22		-1	-1
+10	1	1	23		82	117
+10	1	1	24		83	116
+10	1	1	25		82	116
+10	1	1	26		83	115
+10	1	1	27		82	115
+10	1	1	28		83	114
+10	1	1	29		82	114
+10	1	1	30		83	113
+10	1	1	31		82	113
+10	1	1	32		83	112
+10	1	1	33		82	112
+10	1	1	34		83	111
+10	1	1	35		82	111
+10	1	1	36		83	110
+10	1	1	37		82	110
+10	1	1	38		83	109
+10	1	1	39		82	109
+10	1	1	40		83	108
+10	1	1	41		82	108
+10	1	1	42		83	107
+10	1	1	43		82	107
+10	1	1	44		83	106
+10	1	1	45		-1	-1
+10	1	1	46		82	106
+10	1	1	47		83	105
+10	1	1	48		82	105
+10	1	1	49		83	104
+10	1	1	50		82	104
+10	1	1	51		83	103
+10	1	1	52		82	103
+10	1	1	53		83	102
+10	1	1	54		82	102
+10	1	1	55		83	101
+10	1	1	56		-1	-1
+10	1	1	57		82	101
+10	1	1	58		83	100
+10	1	1	59		82	100
+10	1	1	60		83	99
+10	1	1	61		82	99
+10	1	1	62		83	98
+10	1	1	63		82	98
+10	1	1	64		83	97
+10	1	1	65		82	97
+10	1	1	66		83	96
+10	1	1	67		82	96
+10	1	2	0		81	95
+10	1	2	1		80	95
+10	1	2	2		81	94
+10	1	2	3		80	94
+10	1	2	4		81	93
+10	1	2	5		80	93
+10	1	2	6		81	92
+10	1	2	7		80	92
+10	1	2	8		81	91
+10	1	2	9		80	91
+10	1	2	10		81	90
+10	1	2	11		-1	-1
+10	1	2	12		80	90
+10	1	2	13		81	89
+10	1	2	14		80	89
+10	1	2	15		81	88
+10	1	2	16		80	88
+10	1	2	17		81	87
+10	1	2	18		80	87
+10	1	2	19		81	86
+10	1	2	20		80	86
+10	1	2	21		81	85
+10	1	2	22		-1	-1
+10	1	2	23		80	85
+10	1	2	24		81	84
+10	1	2	25		80	84
+10	1	2	26		81	83
+10	1	2	27		80	83
+10	1	2	28		81	82
+10	1	2	29		80	82
+10	1	2	30		81	81
+10	1	2	31		80	81
+10	1	2	32		81	80
+10	1	2	33		80	80
+10	1	2	34		81	79
+10	1	2	35		80	79
+10	1	2	36		81	78
+10	1	2	37		80	78
+10	1	2	38		81	77
+10	1	2	39		80	77
+10	1	2	40		81	76
+10	1	2	41		80	76
+10	1	2	42		81	75
+10	1	2	43		80	75
+10	1	2	44		81	74
+10	1	2	45		-1	-1
+10	1	2	46		80	74
+10	1	2	47		81	73
+10	1	2	48		80	73
+10	1	2	49		81	72
+10	1	2	50		80	72
+10	1	2	51		81	71
+10	1	2	52		80	71
+10	1	2	53		81	70
+10	1	2	54		80	70
+10	1	2	55		81	69
+10	1	2	56		-1	-1
+10	1	2	57		80	69
+10	1	2	58		81	68
+10	1	2	59		80	68
+10	1	2	60		81	67
+10	1	2	61		80	67
+10	1	2	62		81	66
+10	1	2	63		80	66
+10	1	2	64		81	65
+10	1	2	65		80	65
+10	1	2	66		81	64
+10	1	2	67		80	64
+10	1	3	0		81	127
+10	1	3	1		80	127
+10	1	3	2		81	126
+10	1	3	3		80	126
+10	1	3	4		81	125
+10	1	3	5		80	125
+10	1	3	6		81	124
+10	1	3	7		80	124
+10	1	3	8		81	123
+10	1	3	9		80	123
+10	1	3	10		81	122
+10	1	3	11		-1	-1
+10	1	3	12		80	122
+10	1	3	13		81	121
+10	1	3	14		80	121
+10	1	3	15		81	120
+10	1	3	16		80	120
+10	1	3	17		81	119
+10	1	3	18		80	119
+10	1	3	19		81	118
+10	1	3	20		80	118
+10	1	3	21		81	117
+10	1	3	22		-1	-1
+10	1	3	23		80	117
+10	1	3	24		81	116
+10	1	3	25		80	116
+10	1	3	26		81	115
+10	1	3	27		80	115
+10	1	3	28		81	114
+10	1	3	29		80	114
+10	1	3	30		81	113
+10	1	3	31		80	113
+10	1	3	32		81	112
+10	1	3	33		80	112
+10	1	3	34		81	111
+10	1	3	35		80	111
+10	1	3	36		81	110
+10	1	3	37		80	110
+10	1	3	38		81	109
+10	1	3	39		80	109
+10	1	3	40		81	108
+10	1	3	41		80	108
+10	1	3	42		81	107
+10	1	3	43		80	107
+10	1	3	44		81	106
+10	1	3	45		-1	-1
+10	1	3	46		80	106
+10	1	3	47		81	105
+10	1	3	48		80	105
+10	1	3	49		81	104
+10	1	3	50		80	104
+10	1	3	51		81	103
+10	1	3	52		80	103
+10	1	3	53		81	102
+10	1	3	54		80	102
+10	1	3	55		81	101
+10	1	3	56		-1	-1
+10	1	3	57		80	101
+10	1	3	58		81	100
+10	1	3	59		80	100
+10	1	3	60		81	99
+10	1	3	61		80	99
+10	1	3	62		81	98
+10	1	3	63		80	98
+10	1	3	64		81	97
+10	1	3	65		80	97
+10	1	3	66		81	96
+10	1	3	67		80	96
+10	2	0	0		84	32
+10	2	0	1		85	32
+10	2	0	2		84	33
+10	2	0	3		85	33
+10	2	0	4		84	34
+10	2	0	5		85	34
+10	2	0	6		84	35
+10	2	0	7		85	35
+10	2	0	8		84	36
+10	2	0	9		85	36
+10	2	0	10		84	37
+10	2	0	11		-1	-1
+10	2	0	12		85	37
+10	2	0	13		84	38
+10	2	0	14		85	38
+10	2	0	15		84	39
+10	2	0	16		85	39
+10	2	0	17		84	40
+10	2	0	18		85	40
+10	2	0	19		84	41
+10	2	0	20		85	41
+10	2	0	21		84	42
+10	2	0	22		-1	-1
+10	2	0	23		85	42
+10	2	0	24		84	43
+10	2	0	25		85	43
+10	2	0	26		84	44
+10	2	0	27		85	44
+10	2	0	28		84	45
+10	2	0	29		85	45
+10	2	0	30		84	46
+10	2	0	31		85	46
+10	2	0	32		84	47
+10	2	0	33		85	47
+10	2	0	34		84	48
+10	2	0	35		85	48
+10	2	0	36		84	49
+10	2	0	37		85	49
+10	2	0	38		84	50
+10	2	0	39		85	50
+10	2	0	40		84	51
+10	2	0	41		85	51
+10	2	0	42		84	52
+10	2	0	43		85	52
+10	2	0	44		84	53
+10	2	0	45		-1	-1
+10	2	0	46		85	53
+10	2	0	47		84	54
+10	2	0	48		85	54
+10	2	0	49		84	55
+10	2	0	50		85	55
+10	2	0	51		84	56
+10	2	0	52		85	56
+10	2	0	53		84	57
+10	2	0	54		85	57
+10	2	0	55		84	58
+10	2	0	56		-1	-1
+10	2	0	57		85	58
+10	2	0	58		84	59
+10	2	0	59		85	59
+10	2	0	60		84	60
+10	2	0	61		85	60
+10	2	0	62		84	61
+10	2	0	63		85	61
+10	2	0	64		84	62
+10	2	0	65		85	62
+10	2	0	66		84	63
+10	2	0	67		85	63
+10	2	1	0		84	0
+10	2	1	1		85	0
+10	2	1	2		84	1
+10	2	1	3		85	1
+10	2	1	4		84	2
+10	2	1	5		85	2
+10	2	1	6		84	3
+10	2	1	7		85	3
+10	2	1	8		84	4
+10	2	1	9		85	4
+10	2	1	10		84	5
+10	2	1	11		-1	-1
+10	2	1	12		85	5
+10	2	1	13		84	6
+10	2	1	14		85	6
+10	2	1	15		84	7
+10	2	1	16		85	7
+10	2	1	17		84	8
+10	2	1	18		85	8
+10	2	1	19		84	9
+10	2	1	20		85	9
+10	2	1	21		84	10
+10	2	1	22		-1	-1
+10	2	1	23		85	10
+10	2	1	24		84	11
+10	2	1	25		85	11
+10	2	1	26		84	12
+10	2	1	27		85	12
+10	2	1	28		84	13
+10	2	1	29		85	13
+10	2	1	30		84	14
+10	2	1	31		85	14
+10	2	1	32		84	15
+10	2	1	33		85	15
+10	2	1	34		84	16
+10	2	1	35		85	16
+10	2	1	36		84	17
+10	2	1	37		85	17
+10	2	1	38		84	18
+10	2	1	39		85	18
+10	2	1	40		84	19
+10	2	1	41		85	19
+10	2	1	42		84	20
+10	2	1	43		85	20
+10	2	1	44		84	21
+10	2	1	45		-1	-1
+10	2	1	46		85	21
+10	2	1	47		84	22
+10	2	1	48		85	22
+10	2	1	49		84	23
+10	2	1	50		85	23
+10	2	1	51		84	24
+10	2	1	52		85	24
+10	2	1	53		84	25
+10	2	1	54		85	25
+10	2	1	55		84	26
+10	2	1	56		-1	-1
+10	2	1	57		85	26
+10	2	1	58		84	27
+10	2	1	59		85	27
+10	2	1	60		84	28
+10	2	1	61		85	28
+10	2	1	62		84	29
+10	2	1	63		85	29
+10	2	1	64		84	30
+10	2	1	65		85	30
+10	2	1	66		84	31
+10	2	1	67		85	31
+10	2	2	0		86	32
+10	2	2	1		87	32
+10	2	2	2		86	33
+10	2	2	3		87	33
+10	2	2	4		86	34
+10	2	2	5		87	34
+10	2	2	6		86	35
+10	2	2	7		87	35
+10	2	2	8		86	36
+10	2	2	9		87	36
+10	2	2	10		86	37
+10	2	2	11		-1	-1
+10	2	2	12		87	37
+10	2	2	13		86	38
+10	2	2	14		87	38
+10	2	2	15		86	39
+10	2	2	16		87	39
+10	2	2	17		86	40
+10	2	2	18		87	40
+10	2	2	19		86	41
+10	2	2	20		87	41
+10	2	2	21		86	42
+10	2	2	22		-1	-1
+10	2	2	23		87	42
+10	2	2	24		86	43
+10	2	2	25		87	43
+10	2	2	26		86	44
+10	2	2	27		87	44
+10	2	2	28		86	45
+10	2	2	29		87	45
+10	2	2	30		86	46
+10	2	2	31		87	46
+10	2	2	32		86	47
+10	2	2	33		87	47
+10	2	2	34		86	48
+10	2	2	35		87	48
+10	2	2	36		86	49
+10	2	2	37		87	49
+10	2	2	38		86	50
+10	2	2	39		87	50
+10	2	2	40		86	51
+10	2	2	41		87	51
+10	2	2	42		86	52
+10	2	2	43		87	52
+10	2	2	44		86	53
+10	2	2	45		-1	-1
+10	2	2	46		87	53
+10	2	2	47		86	54
+10	2	2	48		87	54
+10	2	2	49		86	55
+10	2	2	50		87	55
+10	2	2	51		86	56
+10	2	2	52		87	56
+10	2	2	53		86	57
+10	2	2	54		87	57
+10	2	2	55		86	58
+10	2	2	56		-1	-1
+10	2	2	57		87	58
+10	2	2	58		86	59
+10	2	2	59		87	59
+10	2	2	60		86	60
+10	2	2	61		87	60
+10	2	2	62		86	61
+10	2	2	63		87	61
+10	2	2	64		86	62
+10	2	2	65		87	62
+10	2	2	66		86	63
+10	2	2	67		87	63
+10	2	3	0		86	0
+10	2	3	1		87	0
+10	2	3	2		86	1
+10	2	3	3		87	1
+10	2	3	4		86	2
+10	2	3	5		87	2
+10	2	3	6		86	3
+10	2	3	7		87	3
+10	2	3	8		86	4
+10	2	3	9		87	4
+10	2	3	10		86	5
+10	2	3	11		-1	-1
+10	2	3	12		87	5
+10	2	3	13		86	6
+10	2	3	14		87	6
+10	2	3	15		86	7
+10	2	3	16		87	7
+10	2	3	17		86	8
+10	2	3	18		87	8
+10	2	3	19		86	9
+10	2	3	20		87	9
+10	2	3	21		86	10
+10	2	3	22		-1	-1
+10	2	3	23		87	10
+10	2	3	24		86	11
+10	2	3	25		87	11
+10	2	3	26		86	12
+10	2	3	27		87	12
+10	2	3	28		86	13
+10	2	3	29		87	13
+10	2	3	30		86	14
+10	2	3	31		87	14
+10	2	3	32		86	15
+10	2	3	33		87	15
+10	2	3	34		86	16
+10	2	3	35		87	16
+10	2	3	36		86	17
+10	2	3	37		87	17
+10	2	3	38		86	18
+10	2	3	39		87	18
+10	2	3	40		86	19
+10	2	3	41		87	19
+10	2	3	42		86	20
+10	2	3	43		87	20
+10	2	3	44		86	21
+10	2	3	45		-1	-1
+10	2	3	46		87	21
+10	2	3	47		86	22
+10	2	3	48		87	22
+10	2	3	49		86	23
+10	2	3	50		87	23
+10	2	3	51		86	24
+10	2	3	52		87	24
+10	2	3	53		86	25
+10	2	3	54		87	25
+10	2	3	55		86	26
+10	2	3	56		-1	-1
+10	2	3	57		87	26
+10	2	3	58		86	27
+10	2	3	59		87	27
+10	2	3	60		86	28
+10	2	3	61		87	28
+10	2	3	62		86	29
+10	2	3	63		87	29
+10	2	3	64		86	30
+10	2	3	65		87	30
+10	2	3	66		86	31
+10	2	3	67		87	31
+10	3	0	0		87	95
+10	3	0	1		86	95
+10	3	0	2		87	94
+10	3	0	3		86	94
+10	3	0	4		87	93
+10	3	0	5		86	93
+10	3	0	6		87	92
+10	3	0	7		86	92
+10	3	0	8		87	91
+10	3	0	9		86	91
+10	3	0	10		87	90
+10	3	0	11		-1	-1
+10	3	0	12		86	90
+10	3	0	13		87	89
+10	3	0	14		86	89
+10	3	0	15		87	88
+10	3	0	16		86	88
+10	3	0	17		87	87
+10	3	0	18		86	87
+10	3	0	19		87	86
+10	3	0	20		86	86
+10	3	0	21		87	85
+10	3	0	22		-1	-1
+10	3	0	23		86	85
+10	3	0	24		87	84
+10	3	0	25		86	84
+10	3	0	26		87	83
+10	3	0	27		86	83
+10	3	0	28		87	82
+10	3	0	29		86	82
+10	3	0	30		87	81
+10	3	0	31		86	81
+10	3	0	32		87	80
+10	3	0	33		86	80
+10	3	0	34		87	79
+10	3	0	35		86	79
+10	3	0	36		87	78
+10	3	0	37		86	78
+10	3	0	38		87	77
+10	3	0	39		86	77
+10	3	0	40		87	76
+10	3	0	41		86	76
+10	3	0	42		87	75
+10	3	0	43		86	75
+10	3	0	44		87	74
+10	3	0	45		-1	-1
+10	3	0	46		86	74
+10	3	0	47		87	73
+10	3	0	48		86	73
+10	3	0	49		87	72
+10	3	0	50		86	72
+10	3	0	51		87	71
+10	3	0	52		86	71
+10	3	0	53		87	70
+10	3	0	54		86	70
+10	3	0	55		87	69
+10	3	0	56		-1	-1
+10	3	0	57		86	69
+10	3	0	58		87	68
+10	3	0	59		86	68
+10	3	0	60		87	67
+10	3	0	61		86	67
+10	3	0	62		87	66
+10	3	0	63		86	66
+10	3	0	64		87	65
+10	3	0	65		86	65
+10	3	0	66		87	64
+10	3	0	67		86	64
+10	3	1	0		87	127
+10	3	1	1		86	127
+10	3	1	2		87	126
+10	3	1	3		86	126
+10	3	1	4		87	125
+10	3	1	5		86	125
+10	3	1	6		87	124
+10	3	1	7		86	124
+10	3	1	8		87	123
+10	3	1	9		86	123
+10	3	1	10		87	122
+10	3	1	11		-1	-1
+10	3	1	12		86	122
+10	3	1	13		87	121
+10	3	1	14		86	121
+10	3	1	15		87	120
+10	3	1	16		86	120
+10	3	1	17		87	119
+10	3	1	18		86	119
+10	3	1	19		87	118
+10	3	1	20		86	118
+10	3	1	21		87	117
+10	3	1	22		-1	-1
+10	3	1	23		86	117
+10	3	1	24		87	116
+10	3	1	25		86	116
+10	3	1	26		87	115
+10	3	1	27		86	115
+10	3	1	28		87	114
+10	3	1	29		86	114
+10	3	1	30		87	113
+10	3	1	31		86	113
+10	3	1	32		87	112
+10	3	1	33		86	112
+10	3	1	34		87	111
+10	3	1	35		86	111
+10	3	1	36		87	110
+10	3	1	37		86	110
+10	3	1	38		87	109
+10	3	1	39		86	109
+10	3	1	40		87	108
+10	3	1	41		86	108
+10	3	1	42		87	107
+10	3	1	43		86	107
+10	3	1	44		87	106
+10	3	1	45		-1	-1
+10	3	1	46		86	106
+10	3	1	47		87	105
+10	3	1	48		86	105
+10	3	1	49		87	104
+10	3	1	50		86	104
+10	3	1	51		87	103
+10	3	1	52		86	103
+10	3	1	53		87	102
+10	3	1	54		86	102
+10	3	1	55		87	101
+10	3	1	56		-1	-1
+10	3	1	57		86	101
+10	3	1	58		87	100
+10	3	1	59		86	100
+10	3	1	60		87	99
+10	3	1	61		86	99
+10	3	1	62		87	98
+10	3	1	63		86	98
+10	3	1	64		87	97
+10	3	1	65		86	97
+10	3	1	66		87	96
+10	3	1	67		86	96
+10	3	2	0		85	95
+10	3	2	1		84	95
+10	3	2	2		85	94
+10	3	2	3		84	94
+10	3	2	4		85	93
+10	3	2	5		84	93
+10	3	2	6		85	92
+10	3	2	7		84	92
+10	3	2	8		85	91
+10	3	2	9		84	91
+10	3	2	10		85	90
+10	3	2	11		-1	-1
+10	3	2	12		84	90
+10	3	2	13		85	89
+10	3	2	14		84	89
+10	3	2	15		85	88
+10	3	2	16		84	88
+10	3	2	17		85	87
+10	3	2	18		84	87
+10	3	2	19		85	86
+10	3	2	20		84	86
+10	3	2	21		85	85
+10	3	2	22		-1	-1
+10	3	2	23		84	85
+10	3	2	24		85	84
+10	3	2	25		84	84
+10	3	2	26		85	83
+10	3	2	27		84	83
+10	3	2	28		85	82
+10	3	2	29		84	82
+10	3	2	30		85	81
+10	3	2	31		84	81
+10	3	2	32		85	80
+10	3	2	33		84	80
+10	3	2	34		85	79
+10	3	2	35		84	79
+10	3	2	36		85	78
+10	3	2	37		84	78
+10	3	2	38		85	77
+10	3	2	39		84	77
+10	3	2	40		85	76
+10	3	2	41		84	76
+10	3	2	42		85	75
+10	3	2	43		84	75
+10	3	2	44		85	74
+10	3	2	45		-1	-1
+10	3	2	46		84	74
+10	3	2	47		85	73
+10	3	2	48		84	73
+10	3	2	49		85	72
+10	3	2	50		84	72
+10	3	2	51		85	71
+10	3	2	52		84	71
+10	3	2	53		85	70
+10	3	2	54		84	70
+10	3	2	55		85	69
+10	3	2	56		-1	-1
+10	3	2	57		84	69
+10	3	2	58		85	68
+10	3	2	59		84	68
+10	3	2	60		85	67
+10	3	2	61		84	67
+10	3	2	62		85	66
+10	3	2	63		84	66
+10	3	2	64		85	65
+10	3	2	65		84	65
+10	3	2	66		85	64
+10	3	2	67		84	64
+10	3	3	0		85	127
+10	3	3	1		84	127
+10	3	3	2		85	126
+10	3	3	3		84	126
+10	3	3	4		85	125
+10	3	3	5		84	125
+10	3	3	6		85	124
+10	3	3	7		84	124
+10	3	3	8		85	123
+10	3	3	9		84	123
+10	3	3	10		85	122
+10	3	3	11		-1	-1
+10	3	3	12		84	122
+10	3	3	13		85	121
+10	3	3	14		84	121
+10	3	3	15		85	120
+10	3	3	16		84	120
+10	3	3	17		85	119
+10	3	3	18		84	119
+10	3	3	19		85	118
+10	3	3	20		84	118
+10	3	3	21		85	117
+10	3	3	22		-1	-1
+10	3	3	23		84	117
+10	3	3	24		85	116
+10	3	3	25		84	116
+10	3	3	26		85	115
+10	3	3	27		84	115
+10	3	3	28		85	114
+10	3	3	29		84	114
+10	3	3	30		85	113
+10	3	3	31		84	113
+10	3	3	32		85	112
+10	3	3	33		84	112
+10	3	3	34		85	111
+10	3	3	35		84	111
+10	3	3	36		85	110
+10	3	3	37		84	110
+10	3	3	38		85	109
+10	3	3	39		84	109
+10	3	3	40		85	108
+10	3	3	41		84	108
+10	3	3	42		85	107
+10	3	3	43		84	107
+10	3	3	44		85	106
+10	3	3	45		-1	-1
+10	3	3	46		84	106
+10	3	3	47		85	105
+10	3	3	48		84	105
+10	3	3	49		85	104
+10	3	3	50		84	104
+10	3	3	51		85	103
+10	3	3	52		84	103
+10	3	3	53		85	102
+10	3	3	54		84	102
+10	3	3	55		85	101
+10	3	3	56		-1	-1
+10	3	3	57		84	101
+10	3	3	58		85	100
+10	3	3	59		84	100
+10	3	3	60		85	99
+10	3	3	61		84	99
+10	3	3	62		85	98
+10	3	3	63		84	98
+10	3	3	64		85	97
+10	3	3	65		84	97
+10	3	3	66		85	96
+10	3	3	67		84	96
+11	0	0	0		88	32
+11	0	0	1		89	32
+11	0	0	2		88	33
+11	0	0	3		89	33
+11	0	0	4		88	34
+11	0	0	5		89	34
+11	0	0	6		88	35
+11	0	0	7		89	35
+11	0	0	8		88	36
+11	0	0	9		89	36
+11	0	0	10		88	37
+11	0	0	11		-1	-1
+11	0	0	12		89	37
+11	0	0	13		88	38
+11	0	0	14		89	38
+11	0	0	15		88	39
+11	0	0	16		89	39
+11	0	0	17		88	40
+11	0	0	18		89	40
+11	0	0	19		88	41
+11	0	0	20		89	41
+11	0	0	21		88	42
+11	0	0	22		-1	-1
+11	0	0	23		89	42
+11	0	0	24		88	43
+11	0	0	25		89	43
+11	0	0	26		88	44
+11	0	0	27		89	44
+11	0	0	28		88	45
+11	0	0	29		89	45
+11	0	0	30		88	46
+11	0	0	31		89	46
+11	0	0	32		88	47
+11	0	0	33		89	47
+11	0	0	34		88	48
+11	0	0	35		89	48
+11	0	0	36		88	49
+11	0	0	37		89	49
+11	0	0	38		88	50
+11	0	0	39		89	50
+11	0	0	40		88	51
+11	0	0	41		89	51
+11	0	0	42		88	52
+11	0	0	43		89	52
+11	0	0	44		88	53
+11	0	0	45		-1	-1
+11	0	0	46		89	53
+11	0	0	47		88	54
+11	0	0	48		89	54
+11	0	0	49		88	55
+11	0	0	50		89	55
+11	0	0	51		88	56
+11	0	0	52		89	56
+11	0	0	53		88	57
+11	0	0	54		89	57
+11	0	0	55		88	58
+11	0	0	56		-1	-1
+11	0	0	57		89	58
+11	0	0	58		88	59
+11	0	0	59		89	59
+11	0	0	60		88	60
+11	0	0	61		89	60
+11	0	0	62		88	61
+11	0	0	63		89	61
+11	0	0	64		88	62
+11	0	0	65		89	62
+11	0	0	66		88	63
+11	0	0	67		89	63
+11	0	1	0		88	0
+11	0	1	1		89	0
+11	0	1	2		88	1
+11	0	1	3		89	1
+11	0	1	4		88	2
+11	0	1	5		89	2
+11	0	1	6		88	3
+11	0	1	7		89	3
+11	0	1	8		88	4
+11	0	1	9		89	4
+11	0	1	10		88	5
+11	0	1	11		-1	-1
+11	0	1	12		89	5
+11	0	1	13		88	6
+11	0	1	14		89	6
+11	0	1	15		88	7
+11	0	1	16		89	7
+11	0	1	17		88	8
+11	0	1	18		89	8
+11	0	1	19		88	9
+11	0	1	20		89	9
+11	0	1	21		88	10
+11	0	1	22		-1	-1
+11	0	1	23		89	10
+11	0	1	24		88	11
+11	0	1	25		89	11
+11	0	1	26		88	12
+11	0	1	27		89	12
+11	0	1	28		88	13
+11	0	1	29		89	13
+11	0	1	30		88	14
+11	0	1	31		89	14
+11	0	1	32		88	15
+11	0	1	33		89	15
+11	0	1	34		88	16
+11	0	1	35		89	16
+11	0	1	36		88	17
+11	0	1	37		89	17
+11	0	1	38		88	18
+11	0	1	39		89	18
+11	0	1	40		88	19
+11	0	1	41		89	19
+11	0	1	42		88	20
+11	0	1	43		89	20
+11	0	1	44		88	21
+11	0	1	45		-1	-1
+11	0	1	46		89	21
+11	0	1	47		88	22
+11	0	1	48		89	22
+11	0	1	49		88	23
+11	0	1	50		89	23
+11	0	1	51		88	24
+11	0	1	52		89	24
+11	0	1	53		88	25
+11	0	1	54		89	25
+11	0	1	55		88	26
+11	0	1	56		-1	-1
+11	0	1	57		89	26
+11	0	1	58		88	27
+11	0	1	59		89	27
+11	0	1	60		88	28
+11	0	1	61		89	28
+11	0	1	62		88	29
+11	0	1	63		89	29
+11	0	1	64		88	30
+11	0	1	65		89	30
+11	0	1	66		88	31
+11	0	1	67		89	31
+11	0	2	0		90	32
+11	0	2	1		91	32
+11	0	2	2		90	33
+11	0	2	3		91	33
+11	0	2	4		90	34
+11	0	2	5		91	34
+11	0	2	6		90	35
+11	0	2	7		91	35
+11	0	2	8		90	36
+11	0	2	9		91	36
+11	0	2	10		90	37
+11	0	2	11		-1	-1
+11	0	2	12		91	37
+11	0	2	13		90	38
+11	0	2	14		91	38
+11	0	2	15		90	39
+11	0	2	16		91	39
+11	0	2	17		90	40
+11	0	2	18		91	40
+11	0	2	19		90	41
+11	0	2	20		91	41
+11	0	2	21		90	42
+11	0	2	22		-1	-1
+11	0	2	23		91	42
+11	0	2	24		90	43
+11	0	2	25		91	43
+11	0	2	26		90	44
+11	0	2	27		91	44
+11	0	2	28		90	45
+11	0	2	29		91	45
+11	0	2	30		90	46
+11	0	2	31		91	46
+11	0	2	32		90	47
+11	0	2	33		91	47
+11	0	2	34		90	48
+11	0	2	35		91	48
+11	0	2	36		90	49
+11	0	2	37		91	49
+11	0	2	38		90	50
+11	0	2	39		91	50
+11	0	2	40		90	51
+11	0	2	41		91	51
+11	0	2	42		90	52
+11	0	2	43		91	52
+11	0	2	44		90	53
+11	0	2	45		-1	-1
+11	0	2	46		91	53
+11	0	2	47		90	54
+11	0	2	48		91	54
+11	0	2	49		90	55
+11	0	2	50		91	55
+11	0	2	51		90	56
+11	0	2	52		91	56
+11	0	2	53		90	57
+11	0	2	54		91	57
+11	0	2	55		90	58
+11	0	2	56		-1	-1
+11	0	2	57		91	58
+11	0	2	58		90	59
+11	0	2	59		91	59
+11	0	2	60		90	60
+11	0	2	61		91	60
+11	0	2	62		90	61
+11	0	2	63		91	61
+11	0	2	64		90	62
+11	0	2	65		91	62
+11	0	2	66		90	63
+11	0	2	67		91	63
+11	0	3	0		90	0
+11	0	3	1		91	0
+11	0	3	2		90	1
+11	0	3	3		91	1
+11	0	3	4		90	2
+11	0	3	5		91	2
+11	0	3	6		90	3
+11	0	3	7		91	3
+11	0	3	8		90	4
+11	0	3	9		91	4
+11	0	3	10		90	5
+11	0	3	11		-1	-1
+11	0	3	12		91	5
+11	0	3	13		90	6
+11	0	3	14		91	6
+11	0	3	15		90	7
+11	0	3	16		91	7
+11	0	3	17		90	8
+11	0	3	18		91	8
+11	0	3	19		90	9
+11	0	3	20		91	9
+11	0	3	21		90	10
+11	0	3	22		-1	-1
+11	0	3	23		91	10
+11	0	3	24		90	11
+11	0	3	25		91	11
+11	0	3	26		90	12
+11	0	3	27		91	12
+11	0	3	28		90	13
+11	0	3	29		91	13
+11	0	3	30		90	14
+11	0	3	31		91	14
+11	0	3	32		90	15
+11	0	3	33		91	15
+11	0	3	34		90	16
+11	0	3	35		91	16
+11	0	3	36		90	17
+11	0	3	37		91	17
+11	0	3	38		90	18
+11	0	3	39		91	18
+11	0	3	40		90	19
+11	0	3	41		91	19
+11	0	3	42		90	20
+11	0	3	43		91	20
+11	0	3	44		90	21
+11	0	3	45		-1	-1
+11	0	3	46		91	21
+11	0	3	47		90	22
+11	0	3	48		91	22
+11	0	3	49		90	23
+11	0	3	50		91	23
+11	0	3	51		90	24
+11	0	3	52		91	24
+11	0	3	53		90	25
+11	0	3	54		91	25
+11	0	3	55		90	26
+11	0	3	56		-1	-1
+11	0	3	57		91	26
+11	0	3	58		90	27
+11	0	3	59		91	27
+11	0	3	60		90	28
+11	0	3	61		91	28
+11	0	3	62		90	29
+11	0	3	63		91	29
+11	0	3	64		90	30
+11	0	3	65		91	30
+11	0	3	66		90	31
+11	0	3	67		91	31
+11	1	0	0		91	95
+11	1	0	1		90	95
+11	1	0	2		91	94
+11	1	0	3		90	94
+11	1	0	4		91	93
+11	1	0	5		90	93
+11	1	0	6		91	92
+11	1	0	7		90	92
+11	1	0	8		91	91
+11	1	0	9		90	91
+11	1	0	10		91	90
+11	1	0	11		-1	-1
+11	1	0	12		90	90
+11	1	0	13		91	89
+11	1	0	14		90	89
+11	1	0	15		91	88
+11	1	0	16		90	88
+11	1	0	17		91	87
+11	1	0	18		90	87
+11	1	0	19		91	86
+11	1	0	20		90	86
+11	1	0	21		91	85
+11	1	0	22		-1	-1
+11	1	0	23		90	85
+11	1	0	24		91	84
+11	1	0	25		90	84
+11	1	0	26		91	83
+11	1	0	27		90	83
+11	1	0	28		91	82
+11	1	0	29		90	82
+11	1	0	30		91	81
+11	1	0	31		90	81
+11	1	0	32		91	80
+11	1	0	33		90	80
+11	1	0	34		91	79
+11	1	0	35		90	79
+11	1	0	36		91	78
+11	1	0	37		90	78
+11	1	0	38		91	77
+11	1	0	39		90	77
+11	1	0	40		91	76
+11	1	0	41		90	76
+11	1	0	42		91	75
+11	1	0	43		90	75
+11	1	0	44		91	74
+11	1	0	45		-1	-1
+11	1	0	46		90	74
+11	1	0	47		91	73
+11	1	0	48		90	73
+11	1	0	49		91	72
+11	1	0	50		90	72
+11	1	0	51		91	71
+11	1	0	52		90	71
+11	1	0	53		91	70
+11	1	0	54		90	70
+11	1	0	55		91	69
+11	1	0	56		-1	-1
+11	1	0	57		90	69
+11	1	0	58		91	68
+11	1	0	59		90	68
+11	1	0	60		91	67
+11	1	0	61		90	67
+11	1	0	62		91	66
+11	1	0	63		90	66
+11	1	0	64		91	65
+11	1	0	65		90	65
+11	1	0	66		91	64
+11	1	0	67		90	64
+11	1	1	0		91	127
+11	1	1	1		90	127
+11	1	1	2		91	126
+11	1	1	3		90	126
+11	1	1	4		91	125
+11	1	1	5		90	125
+11	1	1	6		91	124
+11	1	1	7		90	124
+11	1	1	8		91	123
+11	1	1	9		90	123
+11	1	1	10		91	122
+11	1	1	11		-1	-1
+11	1	1	12		90	122
+11	1	1	13		91	121
+11	1	1	14		90	121
+11	1	1	15		91	120
+11	1	1	16		90	120
+11	1	1	17		91	119
+11	1	1	18		90	119
+11	1	1	19		91	118
+11	1	1	20		90	118
+11	1	1	21		91	117
+11	1	1	22		-1	-1
+11	1	1	23		90	117
+11	1	1	24		91	116
+11	1	1	25		90	116
+11	1	1	26		91	115
+11	1	1	27		90	115
+11	1	1	28		91	114
+11	1	1	29		90	114
+11	1	1	30		91	113
+11	1	1	31		90	113
+11	1	1	32		91	112
+11	1	1	33		90	112
+11	1	1	34		91	111
+11	1	1	35		90	111
+11	1	1	36		91	110
+11	1	1	37		90	110
+11	1	1	38		91	109
+11	1	1	39		90	109
+11	1	1	40		91	108
+11	1	1	41		90	108
+11	1	1	42		91	107
+11	1	1	43		90	107
+11	1	1	44		91	106
+11	1	1	45		-1	-1
+11	1	1	46		90	106
+11	1	1	47		91	105
+11	1	1	48		90	105
+11	1	1	49		91	104
+11	1	1	50		90	104
+11	1	1	51		91	103
+11	1	1	52		90	103
+11	1	1	53		91	102
+11	1	1	54		90	102
+11	1	1	55		91	101
+11	1	1	56		-1	-1
+11	1	1	57		90	101
+11	1	1	58		91	100
+11	1	1	59		90	100
+11	1	1	60		91	99
+11	1	1	61		90	99
+11	1	1	62		91	98
+11	1	1	63		90	98
+11	1	1	64		91	97
+11	1	1	65		90	97
+11	1	1	66		91	96
+11	1	1	67		90	96
+11	1	2	0		89	95
+11	1	2	1		88	95
+11	1	2	2		89	94
+11	1	2	3		88	94
+11	1	2	4		89	93
+11	1	2	5		88	93
+11	1	2	6		89	92
+11	1	2	7		88	92
+11	1	2	8		89	91
+11	1	2	9		88	91
+11	1	2	10		89	90
+11	1	2	11		-1	-1
+11	1	2	12		88	90
+11	1	2	13		89	89
+11	1	2	14		88	89
+11	1	2	15		89	88
+11	1	2	16		88	88
+11	1	2	17		89	87
+11	1	2	18		88	87
+11	1	2	19		89	86
+11	1	2	20		88	86
+11	1	2	21		89	85
+11	1	2	22		-1	-1
+11	1	2	23		88	85
+11	1	2	24		89	84
+11	1	2	25		88	84
+11	1	2	26		89	83
+11	1	2	27		88	83
+11	1	2	28		89	82
+11	1	2	29		88	82
+11	1	2	30		89	81
+11	1	2	31		88	81
+11	1	2	32		89	80
+11	1	2	33		88	80
+11	1	2	34		89	79
+11	1	2	35		88	79
+11	1	2	36		89	78
+11	1	2	37		88	78
+11	1	2	38		89	77
+11	1	2	39		88	77
+11	1	2	40		89	76
+11	1	2	41		88	76
+11	1	2	42		89	75
+11	1	2	43		88	75
+11	1	2	44		89	74
+11	1	2	45		-1	-1
+11	1	2	46		88	74
+11	1	2	47		89	73
+11	1	2	48		88	73
+11	1	2	49		89	72
+11	1	2	50		88	72
+11	1	2	51		89	71
+11	1	2	52		88	71
+11	1	2	53		89	70
+11	1	2	54		88	70
+11	1	2	55		89	69
+11	1	2	56		-1	-1
+11	1	2	57		88	69
+11	1	2	58		89	68
+11	1	2	59		88	68
+11	1	2	60		89	67
+11	1	2	61		88	67
+11	1	2	62		89	66
+11	1	2	63		88	66
+11	1	2	64		89	65
+11	1	2	65		88	65
+11	1	2	66		89	64
+11	1	2	67		88	64
+11	1	3	0		89	127
+11	1	3	1		88	127
+11	1	3	2		89	126
+11	1	3	3		88	126
+11	1	3	4		89	125
+11	1	3	5		88	125
+11	1	3	6		89	124
+11	1	3	7		88	124
+11	1	3	8		89	123
+11	1	3	9		88	123
+11	1	3	10		89	122
+11	1	3	11		-1	-1
+11	1	3	12		88	122
+11	1	3	13		89	121
+11	1	3	14		88	121
+11	1	3	15		89	120
+11	1	3	16		88	120
+11	1	3	17		89	119
+11	1	3	18		88	119
+11	1	3	19		89	118
+11	1	3	20		88	118
+11	1	3	21		89	117
+11	1	3	22		-1	-1
+11	1	3	23		88	117
+11	1	3	24		89	116
+11	1	3	25		88	116
+11	1	3	26		89	115
+11	1	3	27		88	115
+11	1	3	28		89	114
+11	1	3	29		88	114
+11	1	3	30		89	113
+11	1	3	31		88	113
+11	1	3	32		89	112
+11	1	3	33		88	112
+11	1	3	34		89	111
+11	1	3	35		88	111
+11	1	3	36		89	110
+11	1	3	37		88	110
+11	1	3	38		89	109
+11	1	3	39		88	109
+11	1	3	40		89	108
+11	1	3	41		88	108
+11	1	3	42		89	107
+11	1	3	43		88	107
+11	1	3	44		89	106
+11	1	3	45		-1	-1
+11	1	3	46		88	106
+11	1	3	47		89	105
+11	1	3	48		88	105
+11	1	3	49		89	104
+11	1	3	50		88	104
+11	1	3	51		89	103
+11	1	3	52		88	103
+11	1	3	53		89	102
+11	1	3	54		88	102
+11	1	3	55		89	101
+11	1	3	56		-1	-1
+11	1	3	57		88	101
+11	1	3	58		89	100
+11	1	3	59		88	100
+11	1	3	60		89	99
+11	1	3	61		88	99
+11	1	3	62		89	98
+11	1	3	63		88	98
+11	1	3	64		89	97
+11	1	3	65		88	97
+11	1	3	66		89	96
+11	1	3	67		88	96
+11	2	0	0		92	32
+11	2	0	1		93	32
+11	2	0	2		92	33
+11	2	0	3		93	33
+11	2	0	4		92	34
+11	2	0	5		93	34
+11	2	0	6		92	35
+11	2	0	7		93	35
+11	2	0	8		92	36
+11	2	0	9		93	36
+11	2	0	10		92	37
+11	2	0	11		-1	-1
+11	2	0	12		93	37
+11	2	0	13		92	38
+11	2	0	14		93	38
+11	2	0	15		92	39
+11	2	0	16		93	39
+11	2	0	17		92	40
+11	2	0	18		93	40
+11	2	0	19		92	41
+11	2	0	20		93	41
+11	2	0	21		92	42
+11	2	0	22		-1	-1
+11	2	0	23		93	42
+11	2	0	24		92	43
+11	2	0	25		93	43
+11	2	0	26		92	44
+11	2	0	27		93	44
+11	2	0	28		92	45
+11	2	0	29		93	45
+11	2	0	30		92	46
+11	2	0	31		93	46
+11	2	0	32		92	47
+11	2	0	33		93	47
+11	2	0	34		92	48
+11	2	0	35		93	48
+11	2	0	36		92	49
+11	2	0	37		93	49
+11	2	0	38		92	50
+11	2	0	39		93	50
+11	2	0	40		92	51
+11	2	0	41		93	51
+11	2	0	42		92	52
+11	2	0	43		93	52
+11	2	0	44		92	53
+11	2	0	45		-1	-1
+11	2	0	46		93	53
+11	2	0	47		92	54
+11	2	0	48		93	54
+11	2	0	49		92	55
+11	2	0	50		93	55
+11	2	0	51		92	56
+11	2	0	52		93	56
+11	2	0	53		92	57
+11	2	0	54		93	57
+11	2	0	55		92	58
+11	2	0	56		-1	-1
+11	2	0	57		93	58
+11	2	0	58		92	59
+11	2	0	59		93	59
+11	2	0	60		92	60
+11	2	0	61		93	60
+11	2	0	62		92	61
+11	2	0	63		93	61
+11	2	0	64		92	62
+11	2	0	65		93	62
+11	2	0	66		92	63
+11	2	0	67		93	63
+11	2	1	0		92	0
+11	2	1	1		93	0
+11	2	1	2		92	1
+11	2	1	3		93	1
+11	2	1	4		92	2
+11	2	1	5		93	2
+11	2	1	6		92	3
+11	2	1	7		93	3
+11	2	1	8		92	4
+11	2	1	9		93	4
+11	2	1	10		92	5
+11	2	1	11		-1	-1
+11	2	1	12		93	5
+11	2	1	13		92	6
+11	2	1	14		93	6
+11	2	1	15		92	7
+11	2	1	16		93	7
+11	2	1	17		92	8
+11	2	1	18		93	8
+11	2	1	19		92	9
+11	2	1	20		93	9
+11	2	1	21		92	10
+11	2	1	22		-1	-1
+11	2	1	23		93	10
+11	2	1	24		92	11
+11	2	1	25		93	11
+11	2	1	26		92	12
+11	2	1	27		93	12
+11	2	1	28		92	13
+11	2	1	29		93	13
+11	2	1	30		92	14
+11	2	1	31		93	14
+11	2	1	32		92	15
+11	2	1	33		93	15
+11	2	1	34		92	16
+11	2	1	35		93	16
+11	2	1	36		92	17
+11	2	1	37		93	17
+11	2	1	38		92	18
+11	2	1	39		93	18
+11	2	1	40		92	19
+11	2	1	41		93	19
+11	2	1	42		92	20
+11	2	1	43		93	20
+11	2	1	44		92	21
+11	2	1	45		-1	-1
+11	2	1	46		93	21
+11	2	1	47		92	22
+11	2	1	48		93	22
+11	2	1	49		92	23
+11	2	1	50		93	23
+11	2	1	51		92	24
+11	2	1	52		93	24
+11	2	1	53		92	25
+11	2	1	54		93	25
+11	2	1	55		92	26
+11	2	1	56		-1	-1
+11	2	1	57		93	26
+11	2	1	58		92	27
+11	2	1	59		93	27
+11	2	1	60		92	28
+11	2	1	61		93	28
+11	2	1	62		92	29
+11	2	1	63		93	29
+11	2	1	64		92	30
+11	2	1	65		93	30
+11	2	1	66		92	31
+11	2	1	67		93	31
+11	2	2	0		94	32
+11	2	2	1		95	32
+11	2	2	2		94	33
+11	2	2	3		95	33
+11	2	2	4		94	34
+11	2	2	5		95	34
+11	2	2	6		94	35
+11	2	2	7		95	35
+11	2	2	8		94	36
+11	2	2	9		95	36
+11	2	2	10		94	37
+11	2	2	11		-1	-1
+11	2	2	12		95	37
+11	2	2	13		94	38
+11	2	2	14		95	38
+11	2	2	15		94	39
+11	2	2	16		95	39
+11	2	2	17		94	40
+11	2	2	18		95	40
+11	2	2	19		94	41
+11	2	2	20		95	41
+11	2	2	21		94	42
+11	2	2	22		-1	-1
+11	2	2	23		95	42
+11	2	2	24		94	43
+11	2	2	25		95	43
+11	2	2	26		94	44
+11	2	2	27		95	44
+11	2	2	28		94	45
+11	2	2	29		95	45
+11	2	2	30		94	46
+11	2	2	31		95	46
+11	2	2	32		94	47
+11	2	2	33		95	47
+11	2	2	34		94	48
+11	2	2	35		95	48
+11	2	2	36		94	49
+11	2	2	37		95	49
+11	2	2	38		94	50
+11	2	2	39		95	50
+11	2	2	40		94	51
+11	2	2	41		95	51
+11	2	2	42		94	52
+11	2	2	43		95	52
+11	2	2	44		94	53
+11	2	2	45		-1	-1
+11	2	2	46		95	53
+11	2	2	47		94	54
+11	2	2	48		95	54
+11	2	2	49		94	55
+11	2	2	50		95	55
+11	2	2	51		94	56
+11	2	2	52		95	56
+11	2	2	53		94	57
+11	2	2	54		95	57
+11	2	2	55		94	58
+11	2	2	56		-1	-1
+11	2	2	57		95	58
+11	2	2	58		94	59
+11	2	2	59		95	59
+11	2	2	60		94	60
+11	2	2	61		95	60
+11	2	2	62		94	61
+11	2	2	63		95	61
+11	2	2	64		94	62
+11	2	2	65		95	62
+11	2	2	66		94	63
+11	2	2	67		95	63
+11	2	3	0		94	0
+11	2	3	1		95	0
+11	2	3	2		94	1
+11	2	3	3		95	1
+11	2	3	4		94	2
+11	2	3	5		95	2
+11	2	3	6		94	3
+11	2	3	7		95	3
+11	2	3	8		94	4
+11	2	3	9		95	4
+11	2	3	10		94	5
+11	2	3	11		-1	-1
+11	2	3	12		95	5
+11	2	3	13		94	6
+11	2	3	14		95	6
+11	2	3	15		94	7
+11	2	3	16		95	7
+11	2	3	17		94	8
+11	2	3	18		95	8
+11	2	3	19		94	9
+11	2	3	20		95	9
+11	2	3	21		94	10
+11	2	3	22		-1	-1
+11	2	3	23		95	10
+11	2	3	24		94	11
+11	2	3	25		95	11
+11	2	3	26		94	12
+11	2	3	27		95	12
+11	2	3	28		94	13
+11	2	3	29		95	13
+11	2	3	30		94	14
+11	2	3	31		95	14
+11	2	3	32		94	15
+11	2	3	33		95	15
+11	2	3	34		94	16
+11	2	3	35		95	16
+11	2	3	36		94	17
+11	2	3	37		95	17
+11	2	3	38		94	18
+11	2	3	39		95	18
+11	2	3	40		94	19
+11	2	3	41		95	19
+11	2	3	42		94	20
+11	2	3	43		95	20
+11	2	3	44		94	21
+11	2	3	45		-1	-1
+11	2	3	46		95	21
+11	2	3	47		94	22
+11	2	3	48		95	22
+11	2	3	49		94	23
+11	2	3	50		95	23
+11	2	3	51		94	24
+11	2	3	52		95	24
+11	2	3	53		94	25
+11	2	3	54		95	25
+11	2	3	55		94	26
+11	2	3	56		-1	-1
+11	2	3	57		95	26
+11	2	3	58		94	27
+11	2	3	59		95	27
+11	2	3	60		94	28
+11	2	3	61		95	28
+11	2	3	62		94	29
+11	2	3	63		95	29
+11	2	3	64		94	30
+11	2	3	65		95	30
+11	2	3	66		94	31
+11	2	3	67		95	31
+11	3	0	0		95	95
+11	3	0	1		94	95
+11	3	0	2		95	94
+11	3	0	3		94	94
+11	3	0	4		95	93
+11	3	0	5		94	93
+11	3	0	6		95	92
+11	3	0	7		94	92
+11	3	0	8		95	91
+11	3	0	9		94	91
+11	3	0	10		95	90
+11	3	0	11		-1	-1
+11	3	0	12		94	90
+11	3	0	13		95	89
+11	3	0	14		94	89
+11	3	0	15		95	88
+11	3	0	16		94	88
+11	3	0	17		95	87
+11	3	0	18		94	87
+11	3	0	19		95	86
+11	3	0	20		94	86
+11	3	0	21		95	85
+11	3	0	22		-1	-1
+11	3	0	23		94	85
+11	3	0	24		95	84
+11	3	0	25		94	84
+11	3	0	26		95	83
+11	3	0	27		94	83
+11	3	0	28		95	82
+11	3	0	29		94	82
+11	3	0	30		95	81
+11	3	0	31		94	81
+11	3	0	32		95	80
+11	3	0	33		94	80
+11	3	0	34		95	79
+11	3	0	35		94	79
+11	3	0	36		95	78
+11	3	0	37		94	78
+11	3	0	38		95	77
+11	3	0	39		94	77
+11	3	0	40		95	76
+11	3	0	41		94	76
+11	3	0	42		95	75
+11	3	0	43		94	75
+11	3	0	44		95	74
+11	3	0	45		-1	-1
+11	3	0	46		94	74
+11	3	0	47		95	73
+11	3	0	48		94	73
+11	3	0	49		95	72
+11	3	0	50		94	72
+11	3	0	51		95	71
+11	3	0	52		94	71
+11	3	0	53		95	70
+11	3	0	54		94	70
+11	3	0	55		95	69
+11	3	0	56		-1	-1
+11	3	0	57		94	69
+11	3	0	58		95	68
+11	3	0	59		94	68
+11	3	0	60		95	67
+11	3	0	61		94	67
+11	3	0	62		95	66
+11	3	0	63		94	66
+11	3	0	64		95	65
+11	3	0	65		94	65
+11	3	0	66		95	64
+11	3	0	67		94	64
+11	3	1	0		95	127
+11	3	1	1		94	127
+11	3	1	2		95	126
+11	3	1	3		94	126
+11	3	1	4		95	125
+11	3	1	5		94	125
+11	3	1	6		95	124
+11	3	1	7		94	124
+11	3	1	8		95	123
+11	3	1	9		94	123
+11	3	1	10		95	122
+11	3	1	11		-1	-1
+11	3	1	12		94	122
+11	3	1	13		95	121
+11	3	1	14		94	121
+11	3	1	15		95	120
+11	3	1	16		94	120
+11	3	1	17		95	119
+11	3	1	18		94	119
+11	3	1	19		95	118
+11	3	1	20		94	118
+11	3	1	21		95	117
+11	3	1	22		-1	-1
+11	3	1	23		94	117
+11	3	1	24		95	116
+11	3	1	25		94	116
+11	3	1	26		95	115
+11	3	1	27		94	115
+11	3	1	28		95	114
+11	3	1	29		94	114
+11	3	1	30		95	113
+11	3	1	31		94	113
+11	3	1	32		95	112
+11	3	1	33		94	112
+11	3	1	34		95	111
+11	3	1	35		94	111
+11	3	1	36		95	110
+11	3	1	37		94	110
+11	3	1	38		95	109
+11	3	1	39		94	109
+11	3	1	40		95	108
+11	3	1	41		94	108
+11	3	1	42		95	107
+11	3	1	43		94	107
+11	3	1	44		95	106
+11	3	1	45		-1	-1
+11	3	1	46		94	106
+11	3	1	47		95	105
+11	3	1	48		94	105
+11	3	1	49		95	104
+11	3	1	50		94	104
+11	3	1	51		95	103
+11	3	1	52		94	103
+11	3	1	53		95	102
+11	3	1	54		94	102
+11	3	1	55		95	101
+11	3	1	56		-1	-1
+11	3	1	57		94	101
+11	3	1	58		95	100
+11	3	1	59		94	100
+11	3	1	60		95	99
+11	3	1	61		94	99
+11	3	1	62		95	98
+11	3	1	63		94	98
+11	3	1	64		95	97
+11	3	1	65		94	97
+11	3	1	66		95	96
+11	3	1	67		94	96
+11	3	2	0		93	95
+11	3	2	1		92	95
+11	3	2	2		93	94
+11	3	2	3		92	94
+11	3	2	4		93	93
+11	3	2	5		92	93
+11	3	2	6		93	92
+11	3	2	7		92	92
+11	3	2	8		93	91
+11	3	2	9		92	91
+11	3	2	10		93	90
+11	3	2	11		-1	-1
+11	3	2	12		92	90
+11	3	2	13		93	89
+11	3	2	14		92	89
+11	3	2	15		93	88
+11	3	2	16		92	88
+11	3	2	17		93	87
+11	3	2	18		92	87
+11	3	2	19		93	86
+11	3	2	20		92	86
+11	3	2	21		93	85
+11	3	2	22		-1	-1
+11	3	2	23		92	85
+11	3	2	24		93	84
+11	3	2	25		92	84
+11	3	2	26		93	83
+11	3	2	27		92	83
+11	3	2	28		93	82
+11	3	2	29		92	82
+11	3	2	30		93	81
+11	3	2	31		92	81
+11	3	2	32		93	80
+11	3	2	33		92	80
+11	3	2	34		93	79
+11	3	2	35		92	79
+11	3	2	36		93	78
+11	3	2	37		92	78
+11	3	2	38		93	77
+11	3	2	39		92	77
+11	3	2	40		93	76
+11	3	2	41		92	76
+11	3	2	42		93	75
+11	3	2	43		92	75
+11	3	2	44		93	74
+11	3	2	45		-1	-1
+11	3	2	46		92	74
+11	3	2	47		93	73
+11	3	2	48		92	73
+11	3	2	49		93	72
+11	3	2	50		92	72
+11	3	2	51		93	71
+11	3	2	52		92	71
+11	3	2	53		93	70
+11	3	2	54		92	70
+11	3	2	55		93	69
+11	3	2	56		-1	-1
+11	3	2	57		92	69
+11	3	2	58		93	68
+11	3	2	59		92	68
+11	3	2	60		93	67
+11	3	2	61		92	67
+11	3	2	62		93	66
+11	3	2	63		92	66
+11	3	2	64		93	65
+11	3	2	65		92	65
+11	3	2	66		93	64
+11	3	2	67		92	64
+11	3	3	0		93	127
+11	3	3	1		92	127
+11	3	3	2		93	126
+11	3	3	3		92	126
+11	3	3	4		93	125
+11	3	3	5		92	125
+11	3	3	6		93	124
+11	3	3	7		92	124
+11	3	3	8		93	123
+11	3	3	9		92	123
+11	3	3	10		93	122
+11	3	3	11		-1	-1
+11	3	3	12		92	122
+11	3	3	13		93	121
+11	3	3	14		92	121
+11	3	3	15		93	120
+11	3	3	16		92	120
+11	3	3	17		93	119
+11	3	3	18		92	119
+11	3	3	19		93	118
+11	3	3	20		92	118
+11	3	3	21		93	117
+11	3	3	22		-1	-1
+11	3	3	23		92	117
+11	3	3	24		93	116
+11	3	3	25		92	116
+11	3	3	26		93	115
+11	3	3	27		92	115
+11	3	3	28		93	114
+11	3	3	29		92	114
+11	3	3	30		93	113
+11	3	3	31		92	113
+11	3	3	32		93	112
+11	3	3	33		92	112
+11	3	3	34		93	111
+11	3	3	35		92	111
+11	3	3	36		93	110
+11	3	3	37		92	110
+11	3	3	38		93	109
+11	3	3	39		92	109
+11	3	3	40		93	108
+11	3	3	41		92	108
+11	3	3	42		93	107
+11	3	3	43		92	107
+11	3	3	44		93	106
+11	3	3	45		-1	-1
+11	3	3	46		92	106
+11	3	3	47		93	105
+11	3	3	48		92	105
+11	3	3	49		93	104
+11	3	3	50		92	104
+11	3	3	51		93	103
+11	3	3	52		92	103
+11	3	3	53		93	102
+11	3	3	54		92	102
+11	3	3	55		93	101
+11	3	3	56		-1	-1
+11	3	3	57		92	101
+11	3	3	58		93	100
+11	3	3	59		92	100
+11	3	3	60		93	99
+11	3	3	61		92	99
+11	3	3	62		93	98
+11	3	3	63		92	98
+11	3	3	64		93	97
+11	3	3	65		92	97
+11	3	3	66		93	96
+11	3	3	67		92	96
+12	0	0	0		96	32
+12	0	0	1		97	32
+12	0	0	2		96	33
+12	0	0	3		97	33
+12	0	0	4		96	34
+12	0	0	5		97	34
+12	0	0	6		96	35
+12	0	0	7		97	35
+12	0	0	8		96	36
+12	0	0	9		97	36
+12	0	0	10		96	37
+12	0	0	11		-1	-1
+12	0	0	12		97	37
+12	0	0	13		96	38
+12	0	0	14		97	38
+12	0	0	15		96	39
+12	0	0	16		97	39
+12	0	0	17		96	40
+12	0	0	18		97	40
+12	0	0	19		96	41
+12	0	0	20		97	41
+12	0	0	21		96	42
+12	0	0	22		-1	-1
+12	0	0	23		97	42
+12	0	0	24		96	43
+12	0	0	25		97	43
+12	0	0	26		96	44
+12	0	0	27		97	44
+12	0	0	28		96	45
+12	0	0	29		97	45
+12	0	0	30		96	46
+12	0	0	31		97	46
+12	0	0	32		96	47
+12	0	0	33		97	47
+12	0	0	34		96	48
+12	0	0	35		97	48
+12	0	0	36		96	49
+12	0	0	37		97	49
+12	0	0	38		96	50
+12	0	0	39		97	50
+12	0	0	40		96	51
+12	0	0	41		97	51
+12	0	0	42		96	52
+12	0	0	43		97	52
+12	0	0	44		96	53
+12	0	0	45		-1	-1
+12	0	0	46		97	53
+12	0	0	47		96	54
+12	0	0	48		97	54
+12	0	0	49		96	55
+12	0	0	50		97	55
+12	0	0	51		96	56
+12	0	0	52		97	56
+12	0	0	53		96	57
+12	0	0	54		97	57
+12	0	0	55		96	58
+12	0	0	56		-1	-1
+12	0	0	57		97	58
+12	0	0	58		96	59
+12	0	0	59		97	59
+12	0	0	60		96	60
+12	0	0	61		97	60
+12	0	0	62		96	61
+12	0	0	63		97	61
+12	0	0	64		96	62
+12	0	0	65		97	62
+12	0	0	66		96	63
+12	0	0	67		97	63
+12	0	1	0		96	0
+12	0	1	1		97	0
+12	0	1	2		96	1
+12	0	1	3		97	1
+12	0	1	4		96	2
+12	0	1	5		97	2
+12	0	1	6		96	3
+12	0	1	7		97	3
+12	0	1	8		96	4
+12	0	1	9		97	4
+12	0	1	10		96	5
+12	0	1	11		-1	-1
+12	0	1	12		97	5
+12	0	1	13		96	6
+12	0	1	14		97	6
+12	0	1	15		96	7
+12	0	1	16		97	7
+12	0	1	17		96	8
+12	0	1	18		97	8
+12	0	1	19		96	9
+12	0	1	20		97	9
+12	0	1	21		96	10
+12	0	1	22		-1	-1
+12	0	1	23		97	10
+12	0	1	24		96	11
+12	0	1	25		97	11
+12	0	1	26		96	12
+12	0	1	27		97	12
+12	0	1	28		96	13
+12	0	1	29		97	13
+12	0	1	30		96	14
+12	0	1	31		97	14
+12	0	1	32		96	15
+12	0	1	33		97	15
+12	0	1	34		96	16
+12	0	1	35		97	16
+12	0	1	36		96	17
+12	0	1	37		97	17
+12	0	1	38		96	18
+12	0	1	39		97	18
+12	0	1	40		96	19
+12	0	1	41		97	19
+12	0	1	42		96	20
+12	0	1	43		97	20
+12	0	1	44		96	21
+12	0	1	45		-1	-1
+12	0	1	46		97	21
+12	0	1	47		96	22
+12	0	1	48		97	22
+12	0	1	49		96	23
+12	0	1	50		97	23
+12	0	1	51		96	24
+12	0	1	52		97	24
+12	0	1	53		96	25
+12	0	1	54		97	25
+12	0	1	55		96	26
+12	0	1	56		-1	-1
+12	0	1	57		97	26
+12	0	1	58		96	27
+12	0	1	59		97	27
+12	0	1	60		96	28
+12	0	1	61		97	28
+12	0	1	62		96	29
+12	0	1	63		97	29
+12	0	1	64		96	30
+12	0	1	65		97	30
+12	0	1	66		96	31
+12	0	1	67		97	31
+12	0	2	0		98	32
+12	0	2	1		99	32
+12	0	2	2		98	33
+12	0	2	3		99	33
+12	0	2	4		98	34
+12	0	2	5		99	34
+12	0	2	6		98	35
+12	0	2	7		99	35
+12	0	2	8		98	36
+12	0	2	9		99	36
+12	0	2	10		98	37
+12	0	2	11		-1	-1
+12	0	2	12		99	37
+12	0	2	13		98	38
+12	0	2	14		99	38
+12	0	2	15		98	39
+12	0	2	16		99	39
+12	0	2	17		98	40
+12	0	2	18		99	40
+12	0	2	19		98	41
+12	0	2	20		99	41
+12	0	2	21		98	42
+12	0	2	22		-1	-1
+12	0	2	23		99	42
+12	0	2	24		98	43
+12	0	2	25		99	43
+12	0	2	26		98	44
+12	0	2	27		99	44
+12	0	2	28		98	45
+12	0	2	29		99	45
+12	0	2	30		98	46
+12	0	2	31		99	46
+12	0	2	32		98	47
+12	0	2	33		99	47
+12	0	2	34		98	48
+12	0	2	35		99	48
+12	0	2	36		98	49
+12	0	2	37		99	49
+12	0	2	38		98	50
+12	0	2	39		99	50
+12	0	2	40		98	51
+12	0	2	41		99	51
+12	0	2	42		98	52
+12	0	2	43		99	52
+12	0	2	44		98	53
+12	0	2	45		-1	-1
+12	0	2	46		99	53
+12	0	2	47		98	54
+12	0	2	48		99	54
+12	0	2	49		98	55
+12	0	2	50		99	55
+12	0	2	51		98	56
+12	0	2	52		99	56
+12	0	2	53		98	57
+12	0	2	54		99	57
+12	0	2	55		98	58
+12	0	2	56		-1	-1
+12	0	2	57		99	58
+12	0	2	58		98	59
+12	0	2	59		99	59
+12	0	2	60		98	60
+12	0	2	61		99	60
+12	0	2	62		98	61
+12	0	2	63		99	61
+12	0	2	64		98	62
+12	0	2	65		99	62
+12	0	2	66		98	63
+12	0	2	67		99	63
+12	0	3	0		98	0
+12	0	3	1		99	0
+12	0	3	2		98	1
+12	0	3	3		99	1
+12	0	3	4		98	2
+12	0	3	5		99	2
+12	0	3	6		98	3
+12	0	3	7		99	3
+12	0	3	8		98	4
+12	0	3	9		99	4
+12	0	3	10		98	5
+12	0	3	11		-1	-1
+12	0	3	12		99	5
+12	0	3	13		98	6
+12	0	3	14		99	6
+12	0	3	15		98	7
+12	0	3	16		99	7
+12	0	3	17		98	8
+12	0	3	18		99	8
+12	0	3	19		98	9
+12	0	3	20		99	9
+12	0	3	21		98	10
+12	0	3	22		-1	-1
+12	0	3	23		99	10
+12	0	3	24		98	11
+12	0	3	25		99	11
+12	0	3	26		98	12
+12	0	3	27		99	12
+12	0	3	28		98	13
+12	0	3	29		99	13
+12	0	3	30		98	14
+12	0	3	31		99	14
+12	0	3	32		98	15
+12	0	3	33		99	15
+12	0	3	34		98	16
+12	0	3	35		99	16
+12	0	3	36		98	17
+12	0	3	37		99	17
+12	0	3	38		98	18
+12	0	3	39		99	18
+12	0	3	40		98	19
+12	0	3	41		99	19
+12	0	3	42		98	20
+12	0	3	43		99	20
+12	0	3	44		98	21
+12	0	3	45		-1	-1
+12	0	3	46		99	21
+12	0	3	47		98	22
+12	0	3	48		99	22
+12	0	3	49		98	23
+12	0	3	50		99	23
+12	0	3	51		98	24
+12	0	3	52		99	24
+12	0	3	53		98	25
+12	0	3	54		99	25
+12	0	3	55		98	26
+12	0	3	56		-1	-1
+12	0	3	57		99	26
+12	0	3	58		98	27
+12	0	3	59		99	27
+12	0	3	60		98	28
+12	0	3	61		99	28
+12	0	3	62		98	29
+12	0	3	63		99	29
+12	0	3	64		98	30
+12	0	3	65		99	30
+12	0	3	66		98	31
+12	0	3	67		99	31
+12	1	0	0		99	95
+12	1	0	1		98	95
+12	1	0	2		99	94
+12	1	0	3		98	94
+12	1	0	4		99	93
+12	1	0	5		98	93
+12	1	0	6		99	92
+12	1	0	7		98	92
+12	1	0	8		99	91
+12	1	0	9		98	91
+12	1	0	10		99	90
+12	1	0	11		-1	-1
+12	1	0	12		98	90
+12	1	0	13		99	89
+12	1	0	14		98	89
+12	1	0	15		99	88
+12	1	0	16		98	88
+12	1	0	17		99	87
+12	1	0	18		98	87
+12	1	0	19		99	86
+12	1	0	20		98	86
+12	1	0	21		99	85
+12	1	0	22		-1	-1
+12	1	0	23		98	85
+12	1	0	24		99	84
+12	1	0	25		98	84
+12	1	0	26		99	83
+12	1	0	27		98	83
+12	1	0	28		99	82
+12	1	0	29		98	82
+12	1	0	30		99	81
+12	1	0	31		98	81
+12	1	0	32		99	80
+12	1	0	33		98	80
+12	1	0	34		99	79
+12	1	0	35		98	79
+12	1	0	36		99	78
+12	1	0	37		98	78
+12	1	0	38		99	77
+12	1	0	39		98	77
+12	1	0	40		99	76
+12	1	0	41		98	76
+12	1	0	42		99	75
+12	1	0	43		98	75
+12	1	0	44		99	74
+12	1	0	45		-1	-1
+12	1	0	46		98	74
+12	1	0	47		99	73
+12	1	0	48		98	73
+12	1	0	49		99	72
+12	1	0	50		98	72
+12	1	0	51		99	71
+12	1	0	52		98	71
+12	1	0	53		99	70
+12	1	0	54		98	70
+12	1	0	55		99	69
+12	1	0	56		-1	-1
+12	1	0	57		98	69
+12	1	0	58		99	68
+12	1	0	59		98	68
+12	1	0	60		99	67
+12	1	0	61		98	67
+12	1	0	62		99	66
+12	1	0	63		98	66
+12	1	0	64		99	65
+12	1	0	65		98	65
+12	1	0	66		99	64
+12	1	0	67		98	64
+12	1	1	0		99	127
+12	1	1	1		98	127
+12	1	1	2		99	126
+12	1	1	3		98	126
+12	1	1	4		99	125
+12	1	1	5		98	125
+12	1	1	6		99	124
+12	1	1	7		98	124
+12	1	1	8		99	123
+12	1	1	9		98	123
+12	1	1	10		99	122
+12	1	1	11		-1	-1
+12	1	1	12		98	122
+12	1	1	13		99	121
+12	1	1	14		98	121
+12	1	1	15		99	120
+12	1	1	16		98	120
+12	1	1	17		99	119
+12	1	1	18		98	119
+12	1	1	19		99	118
+12	1	1	20		98	118
+12	1	1	21		99	117
+12	1	1	22		-1	-1
+12	1	1	23		98	117
+12	1	1	24		99	116
+12	1	1	25		98	116
+12	1	1	26		99	115
+12	1	1	27		98	115
+12	1	1	28		99	114
+12	1	1	29		98	114
+12	1	1	30		99	113
+12	1	1	31		98	113
+12	1	1	32		99	112
+12	1	1	33		98	112
+12	1	1	34		99	111
+12	1	1	35		98	111
+12	1	1	36		99	110
+12	1	1	37		98	110
+12	1	1	38		99	109
+12	1	1	39		98	109
+12	1	1	40		99	108
+12	1	1	41		98	108
+12	1	1	42		99	107
+12	1	1	43		98	107
+12	1	1	44		99	106
+12	1	1	45		-1	-1
+12	1	1	46		98	106
+12	1	1	47		99	105
+12	1	1	48		98	105
+12	1	1	49		99	104
+12	1	1	50		98	104
+12	1	1	51		99	103
+12	1	1	52		98	103
+12	1	1	53		99	102
+12	1	1	54		98	102
+12	1	1	55		99	101
+12	1	1	56		-1	-1
+12	1	1	57		98	101
+12	1	1	58		99	100
+12	1	1	59		98	100
+12	1	1	60		99	99
+12	1	1	61		98	99
+12	1	1	62		99	98
+12	1	1	63		98	98
+12	1	1	64		99	97
+12	1	1	65		98	97
+12	1	1	66		99	96
+12	1	1	67		98	96
+12	1	2	0		97	95
+12	1	2	1		96	95
+12	1	2	2		97	94
+12	1	2	3		96	94
+12	1	2	4		97	93
+12	1	2	5		96	93
+12	1	2	6		97	92
+12	1	2	7		96	92
+12	1	2	8		97	91
+12	1	2	9		96	91
+12	1	2	10		97	90
+12	1	2	11		-1	-1
+12	1	2	12		96	90
+12	1	2	13		97	89
+12	1	2	14		96	89
+12	1	2	15		97	88
+12	1	2	16		96	88
+12	1	2	17		97	87
+12	1	2	18		96	87
+12	1	2	19		97	86
+12	1	2	20		96	86
+12	1	2	21		97	85
+12	1	2	22		-1	-1
+12	1	2	23		96	85
+12	1	2	24		97	84
+12	1	2	25		96	84
+12	1	2	26		97	83
+12	1	2	27		96	83
+12	1	2	28		97	82
+12	1	2	29		96	82
+12	1	2	30		97	81
+12	1	2	31		96	81
+12	1	2	32		97	80
+12	1	2	33		96	80
+12	1	2	34		97	79
+12	1	2	35		96	79
+12	1	2	36		97	78
+12	1	2	37		96	78
+12	1	2	38		97	77
+12	1	2	39		96	77
+12	1	2	40		97	76
+12	1	2	41		96	76
+12	1	2	42		97	75
+12	1	2	43		96	75
+12	1	2	44		97	74
+12	1	2	45		-1	-1
+12	1	2	46		96	74
+12	1	2	47		97	73
+12	1	2	48		96	73
+12	1	2	49		97	72
+12	1	2	50		96	72
+12	1	2	51		97	71
+12	1	2	52		96	71
+12	1	2	53		97	70
+12	1	2	54		96	70
+12	1	2	55		97	69
+12	1	2	56		-1	-1
+12	1	2	57		96	69
+12	1	2	58		97	68
+12	1	2	59		96	68
+12	1	2	60		97	67
+12	1	2	61		96	67
+12	1	2	62		97	66
+12	1	2	63		96	66
+12	1	2	64		97	65
+12	1	2	65		96	65
+12	1	2	66		97	64
+12	1	2	67		96	64
+12	1	3	0		97	127
+12	1	3	1		96	127
+12	1	3	2		97	126
+12	1	3	3		96	126
+12	1	3	4		97	125
+12	1	3	5		96	125
+12	1	3	6		97	124
+12	1	3	7		96	124
+12	1	3	8		97	123
+12	1	3	9		96	123
+12	1	3	10		97	122
+12	1	3	11		-1	-1
+12	1	3	12		96	122
+12	1	3	13		97	121
+12	1	3	14		96	121
+12	1	3	15		97	120
+12	1	3	16		96	120
+12	1	3	17		97	119
+12	1	3	18		96	119
+12	1	3	19		97	118
+12	1	3	20		96	118
+12	1	3	21		97	117
+12	1	3	22		-1	-1
+12	1	3	23		96	117
+12	1	3	24		97	116
+12	1	3	25		96	116
+12	1	3	26		97	115
+12	1	3	27		96	115
+12	1	3	28		97	114
+12	1	3	29		96	114
+12	1	3	30		97	113
+12	1	3	31		96	113
+12	1	3	32		97	112
+12	1	3	33		96	112
+12	1	3	34		97	111
+12	1	3	35		96	111
+12	1	3	36		97	110
+12	1	3	37		96	110
+12	1	3	38		97	109
+12	1	3	39		96	109
+12	1	3	40		97	108
+12	1	3	41		96	108
+12	1	3	42		97	107
+12	1	3	43		96	107
+12	1	3	44		97	106
+12	1	3	45		-1	-1
+12	1	3	46		96	106
+12	1	3	47		97	105
+12	1	3	48		96	105
+12	1	3	49		97	104
+12	1	3	50		96	104
+12	1	3	51		97	103
+12	1	3	52		96	103
+12	1	3	53		97	102
+12	1	3	54		96	102
+12	1	3	55		97	101
+12	1	3	56		-1	-1
+12	1	3	57		96	101
+12	1	3	58		97	100
+12	1	3	59		96	100
+12	1	3	60		97	99
+12	1	3	61		96	99
+12	1	3	62		97	98
+12	1	3	63		96	98
+12	1	3	64		97	97
+12	1	3	65		96	97
+12	1	3	66		97	96
+12	1	3	67		96	96
+12	2	0	0		100	32
+12	2	0	1		101	32
+12	2	0	2		100	33
+12	2	0	3		101	33
+12	2	0	4		100	34
+12	2	0	5		101	34
+12	2	0	6		100	35
+12	2	0	7		101	35
+12	2	0	8		100	36
+12	2	0	9		101	36
+12	2	0	10		100	37
+12	2	0	11		-1	-1
+12	2	0	12		101	37
+12	2	0	13		100	38
+12	2	0	14		101	38
+12	2	0	15		100	39
+12	2	0	16		101	39
+12	2	0	17		100	40
+12	2	0	18		101	40
+12	2	0	19		100	41
+12	2	0	20		101	41
+12	2	0	21		100	42
+12	2	0	22		-1	-1
+12	2	0	23		101	42
+12	2	0	24		100	43
+12	2	0	25		101	43
+12	2	0	26		100	44
+12	2	0	27		101	44
+12	2	0	28		100	45
+12	2	0	29		101	45
+12	2	0	30		100	46
+12	2	0	31		101	46
+12	2	0	32		100	47
+12	2	0	33		101	47
+12	2	0	34		100	48
+12	2	0	35		101	48
+12	2	0	36		100	49
+12	2	0	37		101	49
+12	2	0	38		100	50
+12	2	0	39		101	50
+12	2	0	40		100	51
+12	2	0	41		101	51
+12	2	0	42		100	52
+12	2	0	43		101	52
+12	2	0	44		100	53
+12	2	0	45		-1	-1
+12	2	0	46		101	53
+12	2	0	47		100	54
+12	2	0	48		101	54
+12	2	0	49		100	55
+12	2	0	50		101	55
+12	2	0	51		100	56
+12	2	0	52		101	56
+12	2	0	53		100	57
+12	2	0	54		101	57
+12	2	0	55		100	58
+12	2	0	56		-1	-1
+12	2	0	57		101	58
+12	2	0	58		100	59
+12	2	0	59		101	59
+12	2	0	60		100	60
+12	2	0	61		101	60
+12	2	0	62		100	61
+12	2	0	63		101	61
+12	2	0	64		100	62
+12	2	0	65		101	62
+12	2	0	66		100	63
+12	2	0	67		101	63
+12	2	1	0		100	0
+12	2	1	1		101	0
+12	2	1	2		100	1
+12	2	1	3		101	1
+12	2	1	4		100	2
+12	2	1	5		101	2
+12	2	1	6		100	3
+12	2	1	7		101	3
+12	2	1	8		100	4
+12	2	1	9		101	4
+12	2	1	10		100	5
+12	2	1	11		-1	-1
+12	2	1	12		101	5
+12	2	1	13		100	6
+12	2	1	14		101	6
+12	2	1	15		100	7
+12	2	1	16		101	7
+12	2	1	17		100	8
+12	2	1	18		101	8
+12	2	1	19		100	9
+12	2	1	20		101	9
+12	2	1	21		100	10
+12	2	1	22		-1	-1
+12	2	1	23		101	10
+12	2	1	24		100	11
+12	2	1	25		101	11
+12	2	1	26		100	12
+12	2	1	27		101	12
+12	2	1	28		100	13
+12	2	1	29		101	13
+12	2	1	30		100	14
+12	2	1	31		101	14
+12	2	1	32		100	15
+12	2	1	33		101	15
+12	2	1	34		100	16
+12	2	1	35		101	16
+12	2	1	36		100	17
+12	2	1	37		101	17
+12	2	1	38		100	18
+12	2	1	39		101	18
+12	2	1	40		100	19
+12	2	1	41		101	19
+12	2	1	42		100	20
+12	2	1	43		101	20
+12	2	1	44		100	21
+12	2	1	45		-1	-1
+12	2	1	46		101	21
+12	2	1	47		100	22
+12	2	1	48		101	22
+12	2	1	49		100	23
+12	2	1	50		101	23
+12	2	1	51		100	24
+12	2	1	52		101	24
+12	2	1	53		100	25
+12	2	1	54		101	25
+12	2	1	55		100	26
+12	2	1	56		-1	-1
+12	2	1	57		101	26
+12	2	1	58		100	27
+12	2	1	59		101	27
+12	2	1	60		100	28
+12	2	1	61		101	28
+12	2	1	62		100	29
+12	2	1	63		101	29
+12	2	1	64		100	30
+12	2	1	65		101	30
+12	2	1	66		100	31
+12	2	1	67		101	31
+12	2	2	0		102	32
+12	2	2	1		103	32
+12	2	2	2		102	33
+12	2	2	3		103	33
+12	2	2	4		102	34
+12	2	2	5		103	34
+12	2	2	6		102	35
+12	2	2	7		103	35
+12	2	2	8		102	36
+12	2	2	9		103	36
+12	2	2	10		102	37
+12	2	2	11		-1	-1
+12	2	2	12		103	37
+12	2	2	13		102	38
+12	2	2	14		103	38
+12	2	2	15		102	39
+12	2	2	16		103	39
+12	2	2	17		102	40
+12	2	2	18		103	40
+12	2	2	19		102	41
+12	2	2	20		103	41
+12	2	2	21		102	42
+12	2	2	22		-1	-1
+12	2	2	23		103	42
+12	2	2	24		102	43
+12	2	2	25		103	43
+12	2	2	26		102	44
+12	2	2	27		103	44
+12	2	2	28		102	45
+12	2	2	29		103	45
+12	2	2	30		102	46
+12	2	2	31		103	46
+12	2	2	32		102	47
+12	2	2	33		103	47
+12	2	2	34		102	48
+12	2	2	35		103	48
+12	2	2	36		102	49
+12	2	2	37		103	49
+12	2	2	38		102	50
+12	2	2	39		103	50
+12	2	2	40		102	51
+12	2	2	41		103	51
+12	2	2	42		102	52
+12	2	2	43		103	52
+12	2	2	44		102	53
+12	2	2	45		-1	-1
+12	2	2	46		103	53
+12	2	2	47		102	54
+12	2	2	48		103	54
+12	2	2	49		102	55
+12	2	2	50		103	55
+12	2	2	51		102	56
+12	2	2	52		103	56
+12	2	2	53		102	57
+12	2	2	54		103	57
+12	2	2	55		102	58
+12	2	2	56		-1	-1
+12	2	2	57		103	58
+12	2	2	58		102	59
+12	2	2	59		103	59
+12	2	2	60		102	60
+12	2	2	61		103	60
+12	2	2	62		102	61
+12	2	2	63		103	61
+12	2	2	64		102	62
+12	2	2	65		103	62
+12	2	2	66		102	63
+12	2	2	67		103	63
+12	2	3	0		102	0
+12	2	3	1		103	0
+12	2	3	2		102	1
+12	2	3	3		103	1
+12	2	3	4		102	2
+12	2	3	5		103	2
+12	2	3	6		102	3
+12	2	3	7		103	3
+12	2	3	8		102	4
+12	2	3	9		103	4
+12	2	3	10		102	5
+12	2	3	11		-1	-1
+12	2	3	12		103	5
+12	2	3	13		102	6
+12	2	3	14		103	6
+12	2	3	15		102	7
+12	2	3	16		103	7
+12	2	3	17		102	8
+12	2	3	18		103	8
+12	2	3	19		102	9
+12	2	3	20		103	9
+12	2	3	21		102	10
+12	2	3	22		-1	-1
+12	2	3	23		103	10
+12	2	3	24		102	11
+12	2	3	25		103	11
+12	2	3	26		102	12
+12	2	3	27		103	12
+12	2	3	28		102	13
+12	2	3	29		103	13
+12	2	3	30		102	14
+12	2	3	31		103	14
+12	2	3	32		102	15
+12	2	3	33		103	15
+12	2	3	34		102	16
+12	2	3	35		103	16
+12	2	3	36		102	17
+12	2	3	37		103	17
+12	2	3	38		102	18
+12	2	3	39		103	18
+12	2	3	40		102	19
+12	2	3	41		103	19
+12	2	3	42		102	20
+12	2	3	43		103	20
+12	2	3	44		102	21
+12	2	3	45		-1	-1
+12	2	3	46		103	21
+12	2	3	47		102	22
+12	2	3	48		103	22
+12	2	3	49		102	23
+12	2	3	50		103	23
+12	2	3	51		102	24
+12	2	3	52		103	24
+12	2	3	53		102	25
+12	2	3	54		103	25
+12	2	3	55		102	26
+12	2	3	56		-1	-1
+12	2	3	57		103	26
+12	2	3	58		102	27
+12	2	3	59		103	27
+12	2	3	60		102	28
+12	2	3	61		103	28
+12	2	3	62		102	29
+12	2	3	63		103	29
+12	2	3	64		102	30
+12	2	3	65		103	30
+12	2	3	66		102	31
+12	2	3	67		103	31
+12	3	0	0		103	95
+12	3	0	1		102	95
+12	3	0	2		103	94
+12	3	0	3		102	94
+12	3	0	4		103	93
+12	3	0	5		102	93
+12	3	0	6		103	92
+12	3	0	7		102	92
+12	3	0	8		103	91
+12	3	0	9		102	91
+12	3	0	10		103	90
+12	3	0	11		-1	-1
+12	3	0	12		102	90
+12	3	0	13		103	89
+12	3	0	14		102	89
+12	3	0	15		103	88
+12	3	0	16		102	88
+12	3	0	17		103	87
+12	3	0	18		102	87
+12	3	0	19		103	86
+12	3	0	20		102	86
+12	3	0	21		103	85
+12	3	0	22		-1	-1
+12	3	0	23		102	85
+12	3	0	24		103	84
+12	3	0	25		102	84
+12	3	0	26		103	83
+12	3	0	27		102	83
+12	3	0	28		103	82
+12	3	0	29		102	82
+12	3	0	30		103	81
+12	3	0	31		102	81
+12	3	0	32		103	80
+12	3	0	33		102	80
+12	3	0	34		103	79
+12	3	0	35		102	79
+12	3	0	36		103	78
+12	3	0	37		102	78
+12	3	0	38		103	77
+12	3	0	39		102	77
+12	3	0	40		103	76
+12	3	0	41		102	76
+12	3	0	42		103	75
+12	3	0	43		102	75
+12	3	0	44		103	74
+12	3	0	45		-1	-1
+12	3	0	46		102	74
+12	3	0	47		103	73
+12	3	0	48		102	73
+12	3	0	49		103	72
+12	3	0	50		102	72
+12	3	0	51		103	71
+12	3	0	52		102	71
+12	3	0	53		103	70
+12	3	0	54		102	70
+12	3	0	55		103	69
+12	3	0	56		-1	-1
+12	3	0	57		102	69
+12	3	0	58		103	68
+12	3	0	59		102	68
+12	3	0	60		103	67
+12	3	0	61		102	67
+12	3	0	62		103	66
+12	3	0	63		102	66
+12	3	0	64		103	65
+12	3	0	65		102	65
+12	3	0	66		103	64
+12	3	0	67		102	64
+12	3	1	0		103	127
+12	3	1	1		102	127
+12	3	1	2		103	126
+12	3	1	3		102	126
+12	3	1	4		103	125
+12	3	1	5		102	125
+12	3	1	6		103	124
+12	3	1	7		102	124
+12	3	1	8		103	123
+12	3	1	9		102	123
+12	3	1	10		103	122
+12	3	1	11		-1	-1
+12	3	1	12		102	122
+12	3	1	13		103	121
+12	3	1	14		102	121
+12	3	1	15		103	120
+12	3	1	16		102	120
+12	3	1	17		103	119
+12	3	1	18		102	119
+12	3	1	19		103	118
+12	3	1	20		102	118
+12	3	1	21		103	117
+12	3	1	22		-1	-1
+12	3	1	23		102	117
+12	3	1	24		103	116
+12	3	1	25		102	116
+12	3	1	26		103	115
+12	3	1	27		102	115
+12	3	1	28		103	114
+12	3	1	29		102	114
+12	3	1	30		103	113
+12	3	1	31		102	113
+12	3	1	32		103	112
+12	3	1	33		102	112
+12	3	1	34		103	111
+12	3	1	35		102	111
+12	3	1	36		103	110
+12	3	1	37		102	110
+12	3	1	38		103	109
+12	3	1	39		102	109
+12	3	1	40		103	108
+12	3	1	41		102	108
+12	3	1	42		103	107
+12	3	1	43		102	107
+12	3	1	44		103	106
+12	3	1	45		-1	-1
+12	3	1	46		102	106
+12	3	1	47		103	105
+12	3	1	48		102	105
+12	3	1	49		103	104
+12	3	1	50		102	104
+12	3	1	51		103	103
+12	3	1	52		102	103
+12	3	1	53		103	102
+12	3	1	54		102	102
+12	3	1	55		103	101
+12	3	1	56		-1	-1
+12	3	1	57		102	101
+12	3	1	58		103	100
+12	3	1	59		102	100
+12	3	1	60		103	99
+12	3	1	61		102	99
+12	3	1	62		103	98
+12	3	1	63		102	98
+12	3	1	64		103	97
+12	3	1	65		102	97
+12	3	1	66		103	96
+12	3	1	67		102	96
+12	3	2	0		101	95
+12	3	2	1		100	95
+12	3	2	2		101	94
+12	3	2	3		100	94
+12	3	2	4		101	93
+12	3	2	5		100	93
+12	3	2	6		101	92
+12	3	2	7		100	92
+12	3	2	8		101	91
+12	3	2	9		100	91
+12	3	2	10		101	90
+12	3	2	11		-1	-1
+12	3	2	12		100	90
+12	3	2	13		101	89
+12	3	2	14		100	89
+12	3	2	15		101	88
+12	3	2	16		100	88
+12	3	2	17		101	87
+12	3	2	18		100	87
+12	3	2	19		101	86
+12	3	2	20		100	86
+12	3	2	21		101	85
+12	3	2	22		-1	-1
+12	3	2	23		100	85
+12	3	2	24		101	84
+12	3	2	25		100	84
+12	3	2	26		101	83
+12	3	2	27		100	83
+12	3	2	28		101	82
+12	3	2	29		100	82
+12	3	2	30		101	81
+12	3	2	31		100	81
+12	3	2	32		101	80
+12	3	2	33		100	80
+12	3	2	34		101	79
+12	3	2	35		100	79
+12	3	2	36		101	78
+12	3	2	37		100	78
+12	3	2	38		101	77
+12	3	2	39		100	77
+12	3	2	40		101	76
+12	3	2	41		100	76
+12	3	2	42		101	75
+12	3	2	43		100	75
+12	3	2	44		101	74
+12	3	2	45		-1	-1
+12	3	2	46		100	74
+12	3	2	47		101	73
+12	3	2	48		100	73
+12	3	2	49		101	72
+12	3	2	50		100	72
+12	3	2	51		101	71
+12	3	2	52		100	71
+12	3	2	53		101	70
+12	3	2	54		100	70
+12	3	2	55		101	69
+12	3	2	56		-1	-1
+12	3	2	57		100	69
+12	3	2	58		101	68
+12	3	2	59		100	68
+12	3	2	60		101	67
+12	3	2	61		100	67
+12	3	2	62		101	66
+12	3	2	63		100	66
+12	3	2	64		101	65
+12	3	2	65		100	65
+12	3	2	66		101	64
+12	3	2	67		100	64
+12	3	3	0		101	127
+12	3	3	1		100	127
+12	3	3	2		101	126
+12	3	3	3		100	126
+12	3	3	4		101	125
+12	3	3	5		100	125
+12	3	3	6		101	124
+12	3	3	7		100	124
+12	3	3	8		101	123
+12	3	3	9		100	123
+12	3	3	10		101	122
+12	3	3	11		-1	-1
+12	3	3	12		100	122
+12	3	3	13		101	121
+12	3	3	14		100	121
+12	3	3	15		101	120
+12	3	3	16		100	120
+12	3	3	17		101	119
+12	3	3	18		100	119
+12	3	3	19		101	118
+12	3	3	20		100	118
+12	3	3	21		101	117
+12	3	3	22		-1	-1
+12	3	3	23		100	117
+12	3	3	24		101	116
+12	3	3	25		100	116
+12	3	3	26		101	115
+12	3	3	27		100	115
+12	3	3	28		101	114
+12	3	3	29		100	114
+12	3	3	30		101	113
+12	3	3	31		100	113
+12	3	3	32		101	112
+12	3	3	33		100	112
+12	3	3	34		101	111
+12	3	3	35		100	111
+12	3	3	36		101	110
+12	3	3	37		100	110
+12	3	3	38		101	109
+12	3	3	39		100	109
+12	3	3	40		101	108
+12	3	3	41		100	108
+12	3	3	42		101	107
+12	3	3	43		100	107
+12	3	3	44		101	106
+12	3	3	45		-1	-1
+12	3	3	46		100	106
+12	3	3	47		101	105
+12	3	3	48		100	105
+12	3	3	49		101	104
+12	3	3	50		100	104
+12	3	3	51		101	103
+12	3	3	52		100	103
+12	3	3	53		101	102
+12	3	3	54		100	102
+12	3	3	55		101	101
+12	3	3	56		-1	-1
+12	3	3	57		100	101
+12	3	3	58		101	100
+12	3	3	59		100	100
+12	3	3	60		101	99
+12	3	3	61		100	99
+12	3	3	62		101	98
+12	3	3	63		100	98
+12	3	3	64		101	97
+12	3	3	65		100	97
+12	3	3	66		101	96
+12	3	3	67		100	96
+13	0	0	0		104	32
+13	0	0	1		105	32
+13	0	0	2		104	33
+13	0	0	3		105	33
+13	0	0	4		104	34
+13	0	0	5		105	34
+13	0	0	6		104	35
+13	0	0	7		105	35
+13	0	0	8		104	36
+13	0	0	9		105	36
+13	0	0	10		104	37
+13	0	0	11		-1	-1
+13	0	0	12		105	37
+13	0	0	13		104	38
+13	0	0	14		105	38
+13	0	0	15		104	39
+13	0	0	16		105	39
+13	0	0	17		104	40
+13	0	0	18		105	40
+13	0	0	19		104	41
+13	0	0	20		105	41
+13	0	0	21		104	42
+13	0	0	22		-1	-1
+13	0	0	23		105	42
+13	0	0	24		104	43
+13	0	0	25		105	43
+13	0	0	26		104	44
+13	0	0	27		105	44
+13	0	0	28		104	45
+13	0	0	29		105	45
+13	0	0	30		104	46
+13	0	0	31		105	46
+13	0	0	32		104	47
+13	0	0	33		105	47
+13	0	0	34		104	48
+13	0	0	35		105	48
+13	0	0	36		104	49
+13	0	0	37		105	49
+13	0	0	38		104	50
+13	0	0	39		105	50
+13	0	0	40		104	51
+13	0	0	41		105	51
+13	0	0	42		104	52
+13	0	0	43		105	52
+13	0	0	44		104	53
+13	0	0	45		-1	-1
+13	0	0	46		105	53
+13	0	0	47		104	54
+13	0	0	48		105	54
+13	0	0	49		104	55
+13	0	0	50		105	55
+13	0	0	51		104	56
+13	0	0	52		105	56
+13	0	0	53		104	57
+13	0	0	54		105	57
+13	0	0	55		104	58
+13	0	0	56		-1	-1
+13	0	0	57		105	58
+13	0	0	58		104	59
+13	0	0	59		105	59
+13	0	0	60		104	60
+13	0	0	61		105	60
+13	0	0	62		104	61
+13	0	0	63		105	61
+13	0	0	64		104	62
+13	0	0	65		105	62
+13	0	0	66		104	63
+13	0	0	67		105	63
+13	0	1	0		104	0
+13	0	1	1		105	0
+13	0	1	2		104	1
+13	0	1	3		105	1
+13	0	1	4		104	2
+13	0	1	5		105	2
+13	0	1	6		104	3
+13	0	1	7		105	3
+13	0	1	8		104	4
+13	0	1	9		105	4
+13	0	1	10		104	5
+13	0	1	11		-1	-1
+13	0	1	12		105	5
+13	0	1	13		104	6
+13	0	1	14		105	6
+13	0	1	15		104	7
+13	0	1	16		105	7
+13	0	1	17		104	8
+13	0	1	18		105	8
+13	0	1	19		104	9
+13	0	1	20		105	9
+13	0	1	21		104	10
+13	0	1	22		-1	-1
+13	0	1	23		105	10
+13	0	1	24		104	11
+13	0	1	25		105	11
+13	0	1	26		104	12
+13	0	1	27		105	12
+13	0	1	28		104	13
+13	0	1	29		105	13
+13	0	1	30		104	14
+13	0	1	31		105	14
+13	0	1	32		104	15
+13	0	1	33		105	15
+13	0	1	34		104	16
+13	0	1	35		105	16
+13	0	1	36		104	17
+13	0	1	37		105	17
+13	0	1	38		104	18
+13	0	1	39		105	18
+13	0	1	40		104	19
+13	0	1	41		105	19
+13	0	1	42		104	20
+13	0	1	43		105	20
+13	0	1	44		104	21
+13	0	1	45		-1	-1
+13	0	1	46		105	21
+13	0	1	47		104	22
+13	0	1	48		105	22
+13	0	1	49		104	23
+13	0	1	50		105	23
+13	0	1	51		104	24
+13	0	1	52		105	24
+13	0	1	53		104	25
+13	0	1	54		105	25
+13	0	1	55		104	26
+13	0	1	56		-1	-1
+13	0	1	57		105	26
+13	0	1	58		104	27
+13	0	1	59		105	27
+13	0	1	60		104	28
+13	0	1	61		105	28
+13	0	1	62		104	29
+13	0	1	63		105	29
+13	0	1	64		104	30
+13	0	1	65		105	30
+13	0	1	66		104	31
+13	0	1	67		105	31
+13	0	2	0		106	32
+13	0	2	1		107	32
+13	0	2	2		106	33
+13	0	2	3		107	33
+13	0	2	4		106	34
+13	0	2	5		107	34
+13	0	2	6		106	35
+13	0	2	7		107	35
+13	0	2	8		106	36
+13	0	2	9		107	36
+13	0	2	10		106	37
+13	0	2	11		-1	-1
+13	0	2	12		107	37
+13	0	2	13		106	38
+13	0	2	14		107	38
+13	0	2	15		106	39
+13	0	2	16		107	39
+13	0	2	17		106	40
+13	0	2	18		107	40
+13	0	2	19		106	41
+13	0	2	20		107	41
+13	0	2	21		106	42
+13	0	2	22		-1	-1
+13	0	2	23		107	42
+13	0	2	24		106	43
+13	0	2	25		107	43
+13	0	2	26		106	44
+13	0	2	27		107	44
+13	0	2	28		106	45
+13	0	2	29		107	45
+13	0	2	30		106	46
+13	0	2	31		107	46
+13	0	2	32		106	47
+13	0	2	33		107	47
+13	0	2	34		106	48
+13	0	2	35		107	48
+13	0	2	36		106	49
+13	0	2	37		107	49
+13	0	2	38		106	50
+13	0	2	39		107	50
+13	0	2	40		106	51
+13	0	2	41		107	51
+13	0	2	42		106	52
+13	0	2	43		107	52
+13	0	2	44		106	53
+13	0	2	45		-1	-1
+13	0	2	46		107	53
+13	0	2	47		106	54
+13	0	2	48		107	54
+13	0	2	49		106	55
+13	0	2	50		107	55
+13	0	2	51		106	56
+13	0	2	52		107	56
+13	0	2	53		106	57
+13	0	2	54		107	57
+13	0	2	55		106	58
+13	0	2	56		-1	-1
+13	0	2	57		107	58
+13	0	2	58		106	59
+13	0	2	59		107	59
+13	0	2	60		106	60
+13	0	2	61		107	60
+13	0	2	62		106	61
+13	0	2	63		107	61
+13	0	2	64		106	62
+13	0	2	65		107	62
+13	0	2	66		106	63
+13	0	2	67		107	63
+13	0	3	0		106	0
+13	0	3	1		107	0
+13	0	3	2		106	1
+13	0	3	3		107	1
+13	0	3	4		106	2
+13	0	3	5		107	2
+13	0	3	6		106	3
+13	0	3	7		107	3
+13	0	3	8		106	4
+13	0	3	9		107	4
+13	0	3	10		106	5
+13	0	3	11		-1	-1
+13	0	3	12		107	5
+13	0	3	13		106	6
+13	0	3	14		107	6
+13	0	3	15		106	7
+13	0	3	16		107	7
+13	0	3	17		106	8
+13	0	3	18		107	8
+13	0	3	19		106	9
+13	0	3	20		107	9
+13	0	3	21		106	10
+13	0	3	22		-1	-1
+13	0	3	23		107	10
+13	0	3	24		106	11
+13	0	3	25		107	11
+13	0	3	26		106	12
+13	0	3	27		107	12
+13	0	3	28		106	13
+13	0	3	29		107	13
+13	0	3	30		106	14
+13	0	3	31		107	14
+13	0	3	32		106	15
+13	0	3	33		107	15
+13	0	3	34		106	16
+13	0	3	35		107	16
+13	0	3	36		106	17
+13	0	3	37		107	17
+13	0	3	38		106	18
+13	0	3	39		107	18
+13	0	3	40		106	19
+13	0	3	41		107	19
+13	0	3	42		106	20
+13	0	3	43		107	20
+13	0	3	44		106	21
+13	0	3	45		-1	-1
+13	0	3	46		107	21
+13	0	3	47		106	22
+13	0	3	48		107	22
+13	0	3	49		106	23
+13	0	3	50		107	23
+13	0	3	51		106	24
+13	0	3	52		107	24
+13	0	3	53		106	25
+13	0	3	54		107	25
+13	0	3	55		106	26
+13	0	3	56		-1	-1
+13	0	3	57		107	26
+13	0	3	58		106	27
+13	0	3	59		107	27
+13	0	3	60		106	28
+13	0	3	61		107	28
+13	0	3	62		106	29
+13	0	3	63		107	29
+13	0	3	64		106	30
+13	0	3	65		107	30
+13	0	3	66		106	31
+13	0	3	67		107	31
+13	1	0	0		107	95
+13	1	0	1		106	95
+13	1	0	2		107	94
+13	1	0	3		106	94
+13	1	0	4		107	93
+13	1	0	5		106	93
+13	1	0	6		107	92
+13	1	0	7		106	92
+13	1	0	8		107	91
+13	1	0	9		106	91
+13	1	0	10		107	90
+13	1	0	11		-1	-1
+13	1	0	12		106	90
+13	1	0	13		107	89
+13	1	0	14		106	89
+13	1	0	15		107	88
+13	1	0	16		106	88
+13	1	0	17		107	87
+13	1	0	18		106	87
+13	1	0	19		107	86
+13	1	0	20		106	86
+13	1	0	21		107	85
+13	1	0	22		-1	-1
+13	1	0	23		106	85
+13	1	0	24		107	84
+13	1	0	25		106	84
+13	1	0	26		107	83
+13	1	0	27		106	83
+13	1	0	28		107	82
+13	1	0	29		106	82
+13	1	0	30		107	81
+13	1	0	31		106	81
+13	1	0	32		107	80
+13	1	0	33		106	80
+13	1	0	34		107	79
+13	1	0	35		106	79
+13	1	0	36		107	78
+13	1	0	37		106	78
+13	1	0	38		107	77
+13	1	0	39		106	77
+13	1	0	40		107	76
+13	1	0	41		106	76
+13	1	0	42		107	75
+13	1	0	43		106	75
+13	1	0	44		107	74
+13	1	0	45		-1	-1
+13	1	0	46		106	74
+13	1	0	47		107	73
+13	1	0	48		106	73
+13	1	0	49		107	72
+13	1	0	50		106	72
+13	1	0	51		107	71
+13	1	0	52		106	71
+13	1	0	53		107	70
+13	1	0	54		106	70
+13	1	0	55		107	69
+13	1	0	56		-1	-1
+13	1	0	57		106	69
+13	1	0	58		107	68
+13	1	0	59		106	68
+13	1	0	60		107	67
+13	1	0	61		106	67
+13	1	0	62		107	66
+13	1	0	63		106	66
+13	1	0	64		107	65
+13	1	0	65		106	65
+13	1	0	66		107	64
+13	1	0	67		106	64
+13	1	1	0		107	127
+13	1	1	1		106	127
+13	1	1	2		107	126
+13	1	1	3		106	126
+13	1	1	4		107	125
+13	1	1	5		106	125
+13	1	1	6		107	124
+13	1	1	7		106	124
+13	1	1	8		107	123
+13	1	1	9		106	123
+13	1	1	10		107	122
+13	1	1	11		-1	-1
+13	1	1	12		106	122
+13	1	1	13		107	121
+13	1	1	14		106	121
+13	1	1	15		107	120
+13	1	1	16		106	120
+13	1	1	17		107	119
+13	1	1	18		106	119
+13	1	1	19		107	118
+13	1	1	20		106	118
+13	1	1	21		107	117
+13	1	1	22		-1	-1
+13	1	1	23		106	117
+13	1	1	24		107	116
+13	1	1	25		106	116
+13	1	1	26		107	115
+13	1	1	27		106	115
+13	1	1	28		107	114
+13	1	1	29		106	114
+13	1	1	30		107	113
+13	1	1	31		106	113
+13	1	1	32		107	112
+13	1	1	33		106	112
+13	1	1	34		107	111
+13	1	1	35		106	111
+13	1	1	36		107	110
+13	1	1	37		106	110
+13	1	1	38		107	109
+13	1	1	39		106	109
+13	1	1	40		107	108
+13	1	1	41		106	108
+13	1	1	42		107	107
+13	1	1	43		106	107
+13	1	1	44		107	106
+13	1	1	45		-1	-1
+13	1	1	46		106	106
+13	1	1	47		107	105
+13	1	1	48		106	105
+13	1	1	49		107	104
+13	1	1	50		106	104
+13	1	1	51		107	103
+13	1	1	52		106	103
+13	1	1	53		107	102
+13	1	1	54		106	102
+13	1	1	55		107	101
+13	1	1	56		-1	-1
+13	1	1	57		106	101
+13	1	1	58		107	100
+13	1	1	59		106	100
+13	1	1	60		107	99
+13	1	1	61		106	99
+13	1	1	62		107	98
+13	1	1	63		106	98
+13	1	1	64		107	97
+13	1	1	65		106	97
+13	1	1	66		107	96
+13	1	1	67		106	96
+13	1	2	0		105	95
+13	1	2	1		104	95
+13	1	2	2		105	94
+13	1	2	3		104	94
+13	1	2	4		105	93
+13	1	2	5		104	93
+13	1	2	6		105	92
+13	1	2	7		104	92
+13	1	2	8		105	91
+13	1	2	9		104	91
+13	1	2	10		105	90
+13	1	2	11		-1	-1
+13	1	2	12		104	90
+13	1	2	13		105	89
+13	1	2	14		104	89
+13	1	2	15		105	88
+13	1	2	16		104	88
+13	1	2	17		105	87
+13	1	2	18		104	87
+13	1	2	19		105	86
+13	1	2	20		104	86
+13	1	2	21		105	85
+13	1	2	22		-1	-1
+13	1	2	23		104	85
+13	1	2	24		105	84
+13	1	2	25		104	84
+13	1	2	26		105	83
+13	1	2	27		104	83
+13	1	2	28		105	82
+13	1	2	29		104	82
+13	1	2	30		105	81
+13	1	2	31		104	81
+13	1	2	32		105	80
+13	1	2	33		104	80
+13	1	2	34		105	79
+13	1	2	35		104	79
+13	1	2	36		105	78
+13	1	2	37		104	78
+13	1	2	38		105	77
+13	1	2	39		104	77
+13	1	2	40		105	76
+13	1	2	41		104	76
+13	1	2	42		105	75
+13	1	2	43		104	75
+13	1	2	44		105	74
+13	1	2	45		-1	-1
+13	1	2	46		104	74
+13	1	2	47		105	73
+13	1	2	48		104	73
+13	1	2	49		105	72
+13	1	2	50		104	72
+13	1	2	51		105	71
+13	1	2	52		104	71
+13	1	2	53		105	70
+13	1	2	54		104	70
+13	1	2	55		105	69
+13	1	2	56		-1	-1
+13	1	2	57		104	69
+13	1	2	58		105	68
+13	1	2	59		104	68
+13	1	2	60		105	67
+13	1	2	61		104	67
+13	1	2	62		105	66
+13	1	2	63		104	66
+13	1	2	64		105	65
+13	1	2	65		104	65
+13	1	2	66		105	64
+13	1	2	67		104	64
+13	1	3	0		105	127
+13	1	3	1		104	127
+13	1	3	2		105	126
+13	1	3	3		104	126
+13	1	3	4		105	125
+13	1	3	5		104	125
+13	1	3	6		105	124
+13	1	3	7		104	124
+13	1	3	8		105	123
+13	1	3	9		104	123
+13	1	3	10		105	122
+13	1	3	11		-1	-1
+13	1	3	12		104	122
+13	1	3	13		105	121
+13	1	3	14		104	121
+13	1	3	15		105	120
+13	1	3	16		104	120
+13	1	3	17		105	119
+13	1	3	18		104	119
+13	1	3	19		105	118
+13	1	3	20		104	118
+13	1	3	21		105	117
+13	1	3	22		-1	-1
+13	1	3	23		104	117
+13	1	3	24		105	116
+13	1	3	25		104	116
+13	1	3	26		105	115
+13	1	3	27		104	115
+13	1	3	28		105	114
+13	1	3	29		104	114
+13	1	3	30		105	113
+13	1	3	31		104	113
+13	1	3	32		105	112
+13	1	3	33		104	112
+13	1	3	34		105	111
+13	1	3	35		104	111
+13	1	3	36		105	110
+13	1	3	37		104	110
+13	1	3	38		105	109
+13	1	3	39		104	109
+13	1	3	40		105	108
+13	1	3	41		104	108
+13	1	3	42		105	107
+13	1	3	43		104	107
+13	1	3	44		105	106
+13	1	3	45		-1	-1
+13	1	3	46		104	106
+13	1	3	47		105	105
+13	1	3	48		104	105
+13	1	3	49		105	104
+13	1	3	50		104	104
+13	1	3	51		105	103
+13	1	3	52		104	103
+13	1	3	53		105	102
+13	1	3	54		104	102
+13	1	3	55		105	101
+13	1	3	56		-1	-1
+13	1	3	57		104	101
+13	1	3	58		105	100
+13	1	3	59		104	100
+13	1	3	60		105	99
+13	1	3	61		104	99
+13	1	3	62		105	98
+13	1	3	63		104	98
+13	1	3	64		105	97
+13	1	3	65		104	97
+13	1	3	66		105	96
+13	1	3	67		104	96
+13	2	0	0		108	32
+13	2	0	1		109	32
+13	2	0	2		108	33
+13	2	0	3		109	33
+13	2	0	4		108	34
+13	2	0	5		109	34
+13	2	0	6		108	35
+13	2	0	7		109	35
+13	2	0	8		108	36
+13	2	0	9		109	36
+13	2	0	10		108	37
+13	2	0	11		-1	-1
+13	2	0	12		109	37
+13	2	0	13		108	38
+13	2	0	14		109	38
+13	2	0	15		108	39
+13	2	0	16		109	39
+13	2	0	17		108	40
+13	2	0	18		109	40
+13	2	0	19		108	41
+13	2	0	20		109	41
+13	2	0	21		108	42
+13	2	0	22		-1	-1
+13	2	0	23		109	42
+13	2	0	24		108	43
+13	2	0	25		109	43
+13	2	0	26		108	44
+13	2	0	27		109	44
+13	2	0	28		108	45
+13	2	0	29		109	45
+13	2	0	30		108	46
+13	2	0	31		109	46
+13	2	0	32		108	47
+13	2	0	33		109	47
+13	2	0	34		108	48
+13	2	0	35		109	48
+13	2	0	36		108	49
+13	2	0	37		109	49
+13	2	0	38		108	50
+13	2	0	39		109	50
+13	2	0	40		108	51
+13	2	0	41		109	51
+13	2	0	42		108	52
+13	2	0	43		109	52
+13	2	0	44		108	53
+13	2	0	45		-1	-1
+13	2	0	46		109	53
+13	2	0	47		108	54
+13	2	0	48		109	54
+13	2	0	49		108	55
+13	2	0	50		109	55
+13	2	0	51		108	56
+13	2	0	52		109	56
+13	2	0	53		108	57
+13	2	0	54		109	57
+13	2	0	55		108	58
+13	2	0	56		-1	-1
+13	2	0	57		109	58
+13	2	0	58		108	59
+13	2	0	59		109	59
+13	2	0	60		108	60
+13	2	0	61		109	60
+13	2	0	62		108	61
+13	2	0	63		109	61
+13	2	0	64		108	62
+13	2	0	65		109	62
+13	2	0	66		108	63
+13	2	0	67		109	63
+13	2	1	0		108	0
+13	2	1	1		109	0
+13	2	1	2		108	1
+13	2	1	3		109	1
+13	2	1	4		108	2
+13	2	1	5		109	2
+13	2	1	6		108	3
+13	2	1	7		109	3
+13	2	1	8		108	4
+13	2	1	9		109	4
+13	2	1	10		108	5
+13	2	1	11		-1	-1
+13	2	1	12		109	5
+13	2	1	13		108	6
+13	2	1	14		109	6
+13	2	1	15		108	7
+13	2	1	16		109	7
+13	2	1	17		108	8
+13	2	1	18		109	8
+13	2	1	19		108	9
+13	2	1	20		109	9
+13	2	1	21		108	10
+13	2	1	22		-1	-1
+13	2	1	23		109	10
+13	2	1	24		108	11
+13	2	1	25		109	11
+13	2	1	26		108	12
+13	2	1	27		109	12
+13	2	1	28		108	13
+13	2	1	29		109	13
+13	2	1	30		108	14
+13	2	1	31		109	14
+13	2	1	32		108	15
+13	2	1	33		109	15
+13	2	1	34		108	16
+13	2	1	35		109	16
+13	2	1	36		108	17
+13	2	1	37		109	17
+13	2	1	38		108	18
+13	2	1	39		109	18
+13	2	1	40		108	19
+13	2	1	41		109	19
+13	2	1	42		108	20
+13	2	1	43		109	20
+13	2	1	44		108	21
+13	2	1	45		-1	-1
+13	2	1	46		109	21
+13	2	1	47		108	22
+13	2	1	48		109	22
+13	2	1	49		108	23
+13	2	1	50		109	23
+13	2	1	51		108	24
+13	2	1	52		109	24
+13	2	1	53		108	25
+13	2	1	54		109	25
+13	2	1	55		108	26
+13	2	1	56		-1	-1
+13	2	1	57		109	26
+13	2	1	58		108	27
+13	2	1	59		109	27
+13	2	1	60		108	28
+13	2	1	61		109	28
+13	2	1	62		108	29
+13	2	1	63		109	29
+13	2	1	64		108	30
+13	2	1	65		109	30
+13	2	1	66		108	31
+13	2	1	67		109	31
+13	2	2	0		110	32
+13	2	2	1		111	32
+13	2	2	2		110	33
+13	2	2	3		111	33
+13	2	2	4		110	34
+13	2	2	5		111	34
+13	2	2	6		110	35
+13	2	2	7		111	35
+13	2	2	8		110	36
+13	2	2	9		111	36
+13	2	2	10		110	37
+13	2	2	11		-1	-1
+13	2	2	12		111	37
+13	2	2	13		110	38
+13	2	2	14		111	38
+13	2	2	15		110	39
+13	2	2	16		111	39
+13	2	2	17		110	40
+13	2	2	18		111	40
+13	2	2	19		110	41
+13	2	2	20		111	41
+13	2	2	21		110	42
+13	2	2	22		-1	-1
+13	2	2	23		111	42
+13	2	2	24		110	43
+13	2	2	25		111	43
+13	2	2	26		110	44
+13	2	2	27		111	44
+13	2	2	28		110	45
+13	2	2	29		111	45
+13	2	2	30		110	46
+13	2	2	31		111	46
+13	2	2	32		110	47
+13	2	2	33		111	47
+13	2	2	34		110	48
+13	2	2	35		111	48
+13	2	2	36		110	49
+13	2	2	37		111	49
+13	2	2	38		110	50
+13	2	2	39		111	50
+13	2	2	40		110	51
+13	2	2	41		111	51
+13	2	2	42		110	52
+13	2	2	43		111	52
+13	2	2	44		110	53
+13	2	2	45		-1	-1
+13	2	2	46		111	53
+13	2	2	47		110	54
+13	2	2	48		111	54
+13	2	2	49		110	55
+13	2	2	50		111	55
+13	2	2	51		110	56
+13	2	2	52		111	56
+13	2	2	53		110	57
+13	2	2	54		111	57
+13	2	2	55		110	58
+13	2	2	56		-1	-1
+13	2	2	57		111	58
+13	2	2	58		110	59
+13	2	2	59		111	59
+13	2	2	60		110	60
+13	2	2	61		111	60
+13	2	2	62		110	61
+13	2	2	63		111	61
+13	2	2	64		110	62
+13	2	2	65		111	62
+13	2	2	66		110	63
+13	2	2	67		111	63
+13	2	3	0		110	0
+13	2	3	1		111	0
+13	2	3	2		110	1
+13	2	3	3		111	1
+13	2	3	4		110	2
+13	2	3	5		111	2
+13	2	3	6		110	3
+13	2	3	7		111	3
+13	2	3	8		110	4
+13	2	3	9		111	4
+13	2	3	10		110	5
+13	2	3	11		-1	-1
+13	2	3	12		111	5
+13	2	3	13		110	6
+13	2	3	14		111	6
+13	2	3	15		110	7
+13	2	3	16		111	7
+13	2	3	17		110	8
+13	2	3	18		111	8
+13	2	3	19		110	9
+13	2	3	20		111	9
+13	2	3	21		110	10
+13	2	3	22		-1	-1
+13	2	3	23		111	10
+13	2	3	24		110	11
+13	2	3	25		111	11
+13	2	3	26		110	12
+13	2	3	27		111	12
+13	2	3	28		110	13
+13	2	3	29		111	13
+13	2	3	30		110	14
+13	2	3	31		111	14
+13	2	3	32		110	15
+13	2	3	33		111	15
+13	2	3	34		110	16
+13	2	3	35		111	16
+13	2	3	36		110	17
+13	2	3	37		111	17
+13	2	3	38		110	18
+13	2	3	39		111	18
+13	2	3	40		110	19
+13	2	3	41		111	19
+13	2	3	42		110	20
+13	2	3	43		111	20
+13	2	3	44		110	21
+13	2	3	45		-1	-1
+13	2	3	46		111	21
+13	2	3	47		110	22
+13	2	3	48		111	22
+13	2	3	49		110	23
+13	2	3	50		111	23
+13	2	3	51		110	24
+13	2	3	52		111	24
+13	2	3	53		110	25
+13	2	3	54		111	25
+13	2	3	55		110	26
+13	2	3	56		-1	-1
+13	2	3	57		111	26
+13	2	3	58		110	27
+13	2	3	59		111	27
+13	2	3	60		110	28
+13	2	3	61		111	28
+13	2	3	62		110	29
+13	2	3	63		111	29
+13	2	3	64		110	30
+13	2	3	65		111	30
+13	2	3	66		110	31
+13	2	3	67		111	31
+13	3	0	0		111	95
+13	3	0	1		110	95
+13	3	0	2		111	94
+13	3	0	3		110	94
+13	3	0	4		111	93
+13	3	0	5		110	93
+13	3	0	6		111	92
+13	3	0	7		110	92
+13	3	0	8		111	91
+13	3	0	9		110	91
+13	3	0	10		111	90
+13	3	0	11		-1	-1
+13	3	0	12		110	90
+13	3	0	13		111	89
+13	3	0	14		110	89
+13	3	0	15		111	88
+13	3	0	16		110	88
+13	3	0	17		111	87
+13	3	0	18		110	87
+13	3	0	19		111	86
+13	3	0	20		110	86
+13	3	0	21		111	85
+13	3	0	22		-1	-1
+13	3	0	23		110	85
+13	3	0	24		111	84
+13	3	0	25		110	84
+13	3	0	26		111	83
+13	3	0	27		110	83
+13	3	0	28		111	82
+13	3	0	29		110	82
+13	3	0	30		111	81
+13	3	0	31		110	81
+13	3	0	32		111	80
+13	3	0	33		110	80
+13	3	0	34		111	79
+13	3	0	35		110	79
+13	3	0	36		111	78
+13	3	0	37		110	78
+13	3	0	38		111	77
+13	3	0	39		110	77
+13	3	0	40		111	76
+13	3	0	41		110	76
+13	3	0	42		111	75
+13	3	0	43		110	75
+13	3	0	44		111	74
+13	3	0	45		-1	-1
+13	3	0	46		110	74
+13	3	0	47		111	73
+13	3	0	48		110	73
+13	3	0	49		111	72
+13	3	0	50		110	72
+13	3	0	51		111	71
+13	3	0	52		110	71
+13	3	0	53		111	70
+13	3	0	54		110	70
+13	3	0	55		111	69
+13	3	0	56		-1	-1
+13	3	0	57		110	69
+13	3	0	58		111	68
+13	3	0	59		110	68
+13	3	0	60		111	67
+13	3	0	61		110	67
+13	3	0	62		111	66
+13	3	0	63		110	66
+13	3	0	64		111	65
+13	3	0	65		110	65
+13	3	0	66		111	64
+13	3	0	67		110	64
+13	3	1	0		111	127
+13	3	1	1		110	127
+13	3	1	2		111	126
+13	3	1	3		110	126
+13	3	1	4		111	125
+13	3	1	5		110	125
+13	3	1	6		111	124
+13	3	1	7		110	124
+13	3	1	8		111	123
+13	3	1	9		110	123
+13	3	1	10		111	122
+13	3	1	11		-1	-1
+13	3	1	12		110	122
+13	3	1	13		111	121
+13	3	1	14		110	121
+13	3	1	15		111	120
+13	3	1	16		110	120
+13	3	1	17		111	119
+13	3	1	18		110	119
+13	3	1	19		111	118
+13	3	1	20		110	118
+13	3	1	21		111	117
+13	3	1	22		-1	-1
+13	3	1	23		110	117
+13	3	1	24		111	116
+13	3	1	25		110	116
+13	3	1	26		111	115
+13	3	1	27		110	115
+13	3	1	28		111	114
+13	3	1	29		110	114
+13	3	1	30		111	113
+13	3	1	31		110	113
+13	3	1	32		111	112
+13	3	1	33		110	112
+13	3	1	34		111	111
+13	3	1	35		110	111
+13	3	1	36		111	110
+13	3	1	37		110	110
+13	3	1	38		111	109
+13	3	1	39		110	109
+13	3	1	40		111	108
+13	3	1	41		110	108
+13	3	1	42		111	107
+13	3	1	43		110	107
+13	3	1	44		111	106
+13	3	1	45		-1	-1
+13	3	1	46		110	106
+13	3	1	47		111	105
+13	3	1	48		110	105
+13	3	1	49		111	104
+13	3	1	50		110	104
+13	3	1	51		111	103
+13	3	1	52		110	103
+13	3	1	53		111	102
+13	3	1	54		110	102
+13	3	1	55		111	101
+13	3	1	56		-1	-1
+13	3	1	57		110	101
+13	3	1	58		111	100
+13	3	1	59		110	100
+13	3	1	60		111	99
+13	3	1	61		110	99
+13	3	1	62		111	98
+13	3	1	63		110	98
+13	3	1	64		111	97
+13	3	1	65		110	97
+13	3	1	66		111	96
+13	3	1	67		110	96
+13	3	2	0		109	95
+13	3	2	1		108	95
+13	3	2	2		109	94
+13	3	2	3		108	94
+13	3	2	4		109	93
+13	3	2	5		108	93
+13	3	2	6		109	92
+13	3	2	7		108	92
+13	3	2	8		109	91
+13	3	2	9		108	91
+13	3	2	10		109	90
+13	3	2	11		-1	-1
+13	3	2	12		108	90
+13	3	2	13		109	89
+13	3	2	14		108	89
+13	3	2	15		109	88
+13	3	2	16		108	88
+13	3	2	17		109	87
+13	3	2	18		108	87
+13	3	2	19		109	86
+13	3	2	20		108	86
+13	3	2	21		109	85
+13	3	2	22		-1	-1
+13	3	2	23		108	85
+13	3	2	24		109	84
+13	3	2	25		108	84
+13	3	2	26		109	83
+13	3	2	27		108	83
+13	3	2	28		109	82
+13	3	2	29		108	82
+13	3	2	30		109	81
+13	3	2	31		108	81
+13	3	2	32		109	80
+13	3	2	33		108	80
+13	3	2	34		109	79
+13	3	2	35		108	79
+13	3	2	36		109	78
+13	3	2	37		108	78
+13	3	2	38		109	77
+13	3	2	39		108	77
+13	3	2	40		109	76
+13	3	2	41		108	76
+13	3	2	42		109	75
+13	3	2	43		108	75
+13	3	2	44		109	74
+13	3	2	45		-1	-1
+13	3	2	46		108	74
+13	3	2	47		109	73
+13	3	2	48		108	73
+13	3	2	49		109	72
+13	3	2	50		108	72
+13	3	2	51		109	71
+13	3	2	52		108	71
+13	3	2	53		109	70
+13	3	2	54		108	70
+13	3	2	55		109	69
+13	3	2	56		-1	-1
+13	3	2	57		108	69
+13	3	2	58		109	68
+13	3	2	59		108	68
+13	3	2	60		109	67
+13	3	2	61		108	67
+13	3	2	62		109	66
+13	3	2	63		108	66
+13	3	2	64		109	65
+13	3	2	65		108	65
+13	3	2	66		109	64
+13	3	2	67		108	64
+13	3	3	0		109	127
+13	3	3	1		108	127
+13	3	3	2		109	126
+13	3	3	3		108	126
+13	3	3	4		109	125
+13	3	3	5		108	125
+13	3	3	6		109	124
+13	3	3	7		108	124
+13	3	3	8		109	123
+13	3	3	9		108	123
+13	3	3	10		109	122
+13	3	3	11		-1	-1
+13	3	3	12		108	122
+13	3	3	13		109	121
+13	3	3	14		108	121
+13	3	3	15		109	120
+13	3	3	16		108	120
+13	3	3	17		109	119
+13	3	3	18		108	119
+13	3	3	19		109	118
+13	3	3	20		108	118
+13	3	3	21		109	117
+13	3	3	22		-1	-1
+13	3	3	23		108	117
+13	3	3	24		109	116
+13	3	3	25		108	116
+13	3	3	26		109	115
+13	3	3	27		108	115
+13	3	3	28		109	114
+13	3	3	29		108	114
+13	3	3	30		109	113
+13	3	3	31		108	113
+13	3	3	32		109	112
+13	3	3	33		108	112
+13	3	3	34		109	111
+13	3	3	35		108	111
+13	3	3	36		109	110
+13	3	3	37		108	110
+13	3	3	38		109	109
+13	3	3	39		108	109
+13	3	3	40		109	108
+13	3	3	41		108	108
+13	3	3	42		109	107
+13	3	3	43		108	107
+13	3	3	44		109	106
+13	3	3	45		-1	-1
+13	3	3	46		108	106
+13	3	3	47		109	105
+13	3	3	48		108	105
+13	3	3	49		109	104
+13	3	3	50		108	104
+13	3	3	51		109	103
+13	3	3	52		108	103
+13	3	3	53		109	102
+13	3	3	54		108	102
+13	3	3	55		109	101
+13	3	3	56		-1	-1
+13	3	3	57		108	101
+13	3	3	58		109	100
+13	3	3	59		108	100
+13	3	3	60		109	99
+13	3	3	61		108	99
+13	3	3	62		109	98
+13	3	3	63		108	98
+13	3	3	64		109	97
+13	3	3	65		108	97
+13	3	3	66		109	96
+13	3	3	67		108	96
+14	0	0	0		112	32
+14	0	0	1		113	32
+14	0	0	2		112	33
+14	0	0	3		113	33
+14	0	0	4		112	34
+14	0	0	5		113	34
+14	0	0	6		112	35
+14	0	0	7		113	35
+14	0	0	8		112	36
+14	0	0	9		113	36
+14	0	0	10		112	37
+14	0	0	11		-1	-1
+14	0	0	12		113	37
+14	0	0	13		112	38
+14	0	0	14		113	38
+14	0	0	15		112	39
+14	0	0	16		113	39
+14	0	0	17		112	40
+14	0	0	18		113	40
+14	0	0	19		112	41
+14	0	0	20		113	41
+14	0	0	21		112	42
+14	0	0	22		-1	-1
+14	0	0	23		113	42
+14	0	0	24		112	43
+14	0	0	25		113	43
+14	0	0	26		112	44
+14	0	0	27		113	44
+14	0	0	28		112	45
+14	0	0	29		113	45
+14	0	0	30		112	46
+14	0	0	31		113	46
+14	0	0	32		112	47
+14	0	0	33		113	47
+14	0	0	34		112	48
+14	0	0	35		113	48
+14	0	0	36		112	49
+14	0	0	37		113	49
+14	0	0	38		112	50
+14	0	0	39		113	50
+14	0	0	40		112	51
+14	0	0	41		113	51
+14	0	0	42		112	52
+14	0	0	43		113	52
+14	0	0	44		112	53
+14	0	0	45		-1	-1
+14	0	0	46		113	53
+14	0	0	47		112	54
+14	0	0	48		113	54
+14	0	0	49		112	55
+14	0	0	50		113	55
+14	0	0	51		112	56
+14	0	0	52		113	56
+14	0	0	53		112	57
+14	0	0	54		113	57
+14	0	0	55		112	58
+14	0	0	56		-1	-1
+14	0	0	57		113	58
+14	0	0	58		112	59
+14	0	0	59		113	59
+14	0	0	60		112	60
+14	0	0	61		113	60
+14	0	0	62		112	61
+14	0	0	63		113	61
+14	0	0	64		112	62
+14	0	0	65		113	62
+14	0	0	66		112	63
+14	0	0	67		113	63
+14	0	1	0		112	0
+14	0	1	1		113	0
+14	0	1	2		112	1
+14	0	1	3		113	1
+14	0	1	4		112	2
+14	0	1	5		113	2
+14	0	1	6		112	3
+14	0	1	7		113	3
+14	0	1	8		112	4
+14	0	1	9		113	4
+14	0	1	10		112	5
+14	0	1	11		-1	-1
+14	0	1	12		113	5
+14	0	1	13		112	6
+14	0	1	14		113	6
+14	0	1	15		112	7
+14	0	1	16		113	7
+14	0	1	17		112	8
+14	0	1	18		113	8
+14	0	1	19		112	9
+14	0	1	20		113	9
+14	0	1	21		112	10
+14	0	1	22		-1	-1
+14	0	1	23		113	10
+14	0	1	24		112	11
+14	0	1	25		113	11
+14	0	1	26		112	12
+14	0	1	27		113	12
+14	0	1	28		112	13
+14	0	1	29		113	13
+14	0	1	30		112	14
+14	0	1	31		113	14
+14	0	1	32		112	15
+14	0	1	33		113	15
+14	0	1	34		112	16
+14	0	1	35		113	16
+14	0	1	36		112	17
+14	0	1	37		113	17
+14	0	1	38		112	18
+14	0	1	39		113	18
+14	0	1	40		112	19
+14	0	1	41		113	19
+14	0	1	42		112	20
+14	0	1	43		113	20
+14	0	1	44		112	21
+14	0	1	45		-1	-1
+14	0	1	46		113	21
+14	0	1	47		112	22
+14	0	1	48		113	22
+14	0	1	49		112	23
+14	0	1	50		113	23
+14	0	1	51		112	24
+14	0	1	52		113	24
+14	0	1	53		112	25
+14	0	1	54		113	25
+14	0	1	55		112	26
+14	0	1	56		-1	-1
+14	0	1	57		113	26
+14	0	1	58		112	27
+14	0	1	59		113	27
+14	0	1	60		112	28
+14	0	1	61		113	28
+14	0	1	62		112	29
+14	0	1	63		113	29
+14	0	1	64		112	30
+14	0	1	65		113	30
+14	0	1	66		112	31
+14	0	1	67		113	31
+14	0	2	0		114	32
+14	0	2	1		115	32
+14	0	2	2		114	33
+14	0	2	3		115	33
+14	0	2	4		114	34
+14	0	2	5		115	34
+14	0	2	6		114	35
+14	0	2	7		115	35
+14	0	2	8		114	36
+14	0	2	9		115	36
+14	0	2	10		114	37
+14	0	2	11		-1	-1
+14	0	2	12		115	37
+14	0	2	13		114	38
+14	0	2	14		115	38
+14	0	2	15		114	39
+14	0	2	16		115	39
+14	0	2	17		114	40
+14	0	2	18		115	40
+14	0	2	19		114	41
+14	0	2	20		115	41
+14	0	2	21		114	42
+14	0	2	22		-1	-1
+14	0	2	23		115	42
+14	0	2	24		114	43
+14	0	2	25		115	43
+14	0	2	26		114	44
+14	0	2	27		115	44
+14	0	2	28		114	45
+14	0	2	29		115	45
+14	0	2	30		114	46
+14	0	2	31		115	46
+14	0	2	32		114	47
+14	0	2	33		115	47
+14	0	2	34		114	48
+14	0	2	35		115	48
+14	0	2	36		114	49
+14	0	2	37		115	49
+14	0	2	38		114	50
+14	0	2	39		115	50
+14	0	2	40		114	51
+14	0	2	41		115	51
+14	0	2	42		114	52
+14	0	2	43		115	52
+14	0	2	44		114	53
+14	0	2	45		-1	-1
+14	0	2	46		115	53
+14	0	2	47		114	54
+14	0	2	48		115	54
+14	0	2	49		114	55
+14	0	2	50		115	55
+14	0	2	51		114	56
+14	0	2	52		115	56
+14	0	2	53		114	57
+14	0	2	54		115	57
+14	0	2	55		114	58
+14	0	2	56		-1	-1
+14	0	2	57		115	58
+14	0	2	58		114	59
+14	0	2	59		115	59
+14	0	2	60		114	60
+14	0	2	61		115	60
+14	0	2	62		114	61
+14	0	2	63		115	61
+14	0	2	64		114	62
+14	0	2	65		115	62
+14	0	2	66		114	63
+14	0	2	67		115	63
+14	0	3	0		114	0
+14	0	3	1		115	0
+14	0	3	2		114	1
+14	0	3	3		115	1
+14	0	3	4		114	2
+14	0	3	5		115	2
+14	0	3	6		114	3
+14	0	3	7		115	3
+14	0	3	8		114	4
+14	0	3	9		115	4
+14	0	3	10		114	5
+14	0	3	11		-1	-1
+14	0	3	12		115	5
+14	0	3	13		114	6
+14	0	3	14		115	6
+14	0	3	15		114	7
+14	0	3	16		115	7
+14	0	3	17		114	8
+14	0	3	18		115	8
+14	0	3	19		114	9
+14	0	3	20		115	9
+14	0	3	21		114	10
+14	0	3	22		-1	-1
+14	0	3	23		115	10
+14	0	3	24		114	11
+14	0	3	25		115	11
+14	0	3	26		114	12
+14	0	3	27		115	12
+14	0	3	28		114	13
+14	0	3	29		115	13
+14	0	3	30		114	14
+14	0	3	31		115	14
+14	0	3	32		114	15
+14	0	3	33		115	15
+14	0	3	34		114	16
+14	0	3	35		115	16
+14	0	3	36		114	17
+14	0	3	37		115	17
+14	0	3	38		114	18
+14	0	3	39		115	18
+14	0	3	40		114	19
+14	0	3	41		115	19
+14	0	3	42		114	20
+14	0	3	43		115	20
+14	0	3	44		114	21
+14	0	3	45		-1	-1
+14	0	3	46		115	21
+14	0	3	47		114	22
+14	0	3	48		115	22
+14	0	3	49		114	23
+14	0	3	50		115	23
+14	0	3	51		114	24
+14	0	3	52		115	24
+14	0	3	53		114	25
+14	0	3	54		115	25
+14	0	3	55		114	26
+14	0	3	56		-1	-1
+14	0	3	57		115	26
+14	0	3	58		114	27
+14	0	3	59		115	27
+14	0	3	60		114	28
+14	0	3	61		115	28
+14	0	3	62		114	29
+14	0	3	63		115	29
+14	0	3	64		114	30
+14	0	3	65		115	30
+14	0	3	66		114	31
+14	0	3	67		115	31
+14	1	0	0		115	95
+14	1	0	1		114	95
+14	1	0	2		115	94
+14	1	0	3		114	94
+14	1	0	4		115	93
+14	1	0	5		114	93
+14	1	0	6		115	92
+14	1	0	7		114	92
+14	1	0	8		115	91
+14	1	0	9		114	91
+14	1	0	10		115	90
+14	1	0	11		-1	-1
+14	1	0	12		114	90
+14	1	0	13		115	89
+14	1	0	14		114	89
+14	1	0	15		115	88
+14	1	0	16		114	88
+14	1	0	17		115	87
+14	1	0	18		114	87
+14	1	0	19		115	86
+14	1	0	20		114	86
+14	1	0	21		115	85
+14	1	0	22		-1	-1
+14	1	0	23		114	85
+14	1	0	24		115	84
+14	1	0	25		114	84
+14	1	0	26		115	83
+14	1	0	27		114	83
+14	1	0	28		115	82
+14	1	0	29		114	82
+14	1	0	30		115	81
+14	1	0	31		114	81
+14	1	0	32		115	80
+14	1	0	33		114	80
+14	1	0	34		115	79
+14	1	0	35		114	79
+14	1	0	36		115	78
+14	1	0	37		114	78
+14	1	0	38		115	77
+14	1	0	39		114	77
+14	1	0	40		115	76
+14	1	0	41		114	76
+14	1	0	42		115	75
+14	1	0	43		114	75
+14	1	0	44		115	74
+14	1	0	45		-1	-1
+14	1	0	46		114	74
+14	1	0	47		115	73
+14	1	0	48		114	73
+14	1	0	49		115	72
+14	1	0	50		114	72
+14	1	0	51		115	71
+14	1	0	52		114	71
+14	1	0	53		115	70
+14	1	0	54		114	70
+14	1	0	55		115	69
+14	1	0	56		-1	-1
+14	1	0	57		114	69
+14	1	0	58		115	68
+14	1	0	59		114	68
+14	1	0	60		115	67
+14	1	0	61		114	67
+14	1	0	62		115	66
+14	1	0	63		114	66
+14	1	0	64		115	65
+14	1	0	65		114	65
+14	1	0	66		115	64
+14	1	0	67		114	64
+14	1	1	0		115	127
+14	1	1	1		114	127
+14	1	1	2		115	126
+14	1	1	3		114	126
+14	1	1	4		115	125
+14	1	1	5		114	125
+14	1	1	6		115	124
+14	1	1	7		114	124
+14	1	1	8		115	123
+14	1	1	9		114	123
+14	1	1	10		115	122
+14	1	1	11		-1	-1
+14	1	1	12		114	122
+14	1	1	13		115	121
+14	1	1	14		114	121
+14	1	1	15		115	120
+14	1	1	16		114	120
+14	1	1	17		115	119
+14	1	1	18		114	119
+14	1	1	19		115	118
+14	1	1	20		114	118
+14	1	1	21		115	117
+14	1	1	22		-1	-1
+14	1	1	23		114	117
+14	1	1	24		115	116
+14	1	1	25		114	116
+14	1	1	26		115	115
+14	1	1	27		114	115
+14	1	1	28		115	114
+14	1	1	29		114	114
+14	1	1	30		115	113
+14	1	1	31		114	113
+14	1	1	32		115	112
+14	1	1	33		114	112
+14	1	1	34		115	111
+14	1	1	35		114	111
+14	1	1	36		115	110
+14	1	1	37		114	110
+14	1	1	38		115	109
+14	1	1	39		114	109
+14	1	1	40		115	108
+14	1	1	41		114	108
+14	1	1	42		115	107
+14	1	1	43		114	107
+14	1	1	44		115	106
+14	1	1	45		-1	-1
+14	1	1	46		114	106
+14	1	1	47		115	105
+14	1	1	48		114	105
+14	1	1	49		115	104
+14	1	1	50		114	104
+14	1	1	51		115	103
+14	1	1	52		114	103
+14	1	1	53		115	102
+14	1	1	54		114	102
+14	1	1	55		115	101
+14	1	1	56		-1	-1
+14	1	1	57		114	101
+14	1	1	58		115	100
+14	1	1	59		114	100
+14	1	1	60		115	99
+14	1	1	61		114	99
+14	1	1	62		115	98
+14	1	1	63		114	98
+14	1	1	64		115	97
+14	1	1	65		114	97
+14	1	1	66		115	96
+14	1	1	67		114	96
+14	1	2	0		113	95
+14	1	2	1		112	95
+14	1	2	2		113	94
+14	1	2	3		112	94
+14	1	2	4		113	93
+14	1	2	5		112	93
+14	1	2	6		113	92
+14	1	2	7		112	92
+14	1	2	8		113	91
+14	1	2	9		112	91
+14	1	2	10		113	90
+14	1	2	11		-1	-1
+14	1	2	12		112	90
+14	1	2	13		113	89
+14	1	2	14		112	89
+14	1	2	15		113	88
+14	1	2	16		112	88
+14	1	2	17		113	87
+14	1	2	18		112	87
+14	1	2	19		113	86
+14	1	2	20		112	86
+14	1	2	21		113	85
+14	1	2	22		-1	-1
+14	1	2	23		112	85
+14	1	2	24		113	84
+14	1	2	25		112	84
+14	1	2	26		113	83
+14	1	2	27		112	83
+14	1	2	28		113	82
+14	1	2	29		112	82
+14	1	2	30		113	81
+14	1	2	31		112	81
+14	1	2	32		113	80
+14	1	2	33		112	80
+14	1	2	34		113	79
+14	1	2	35		112	79
+14	1	2	36		113	78
+14	1	2	37		112	78
+14	1	2	38		113	77
+14	1	2	39		112	77
+14	1	2	40		113	76
+14	1	2	41		112	76
+14	1	2	42		113	75
+14	1	2	43		112	75
+14	1	2	44		113	74
+14	1	2	45		-1	-1
+14	1	2	46		112	74
+14	1	2	47		113	73
+14	1	2	48		112	73
+14	1	2	49		113	72
+14	1	2	50		112	72
+14	1	2	51		113	71
+14	1	2	52		112	71
+14	1	2	53		113	70
+14	1	2	54		112	70
+14	1	2	55		113	69
+14	1	2	56		-1	-1
+14	1	2	57		112	69
+14	1	2	58		113	68
+14	1	2	59		112	68
+14	1	2	60		113	67
+14	1	2	61		112	67
+14	1	2	62		113	66
+14	1	2	63		112	66
+14	1	2	64		113	65
+14	1	2	65		112	65
+14	1	2	66		113	64
+14	1	2	67		112	64
+14	1	3	0		113	127
+14	1	3	1		112	127
+14	1	3	2		113	126
+14	1	3	3		112	126
+14	1	3	4		113	125
+14	1	3	5		112	125
+14	1	3	6		113	124
+14	1	3	7		112	124
+14	1	3	8		113	123
+14	1	3	9		112	123
+14	1	3	10		113	122
+14	1	3	11		-1	-1
+14	1	3	12		112	122
+14	1	3	13		113	121
+14	1	3	14		112	121
+14	1	3	15		113	120
+14	1	3	16		112	120
+14	1	3	17		113	119
+14	1	3	18		112	119
+14	1	3	19		113	118
+14	1	3	20		112	118
+14	1	3	21		113	117
+14	1	3	22		-1	-1
+14	1	3	23		112	117
+14	1	3	24		113	116
+14	1	3	25		112	116
+14	1	3	26		113	115
+14	1	3	27		112	115
+14	1	3	28		113	114
+14	1	3	29		112	114
+14	1	3	30		113	113
+14	1	3	31		112	113
+14	1	3	32		113	112
+14	1	3	33		112	112
+14	1	3	34		113	111
+14	1	3	35		112	111
+14	1	3	36		113	110
+14	1	3	37		112	110
+14	1	3	38		113	109
+14	1	3	39		112	109
+14	1	3	40		113	108
+14	1	3	41		112	108
+14	1	3	42		113	107
+14	1	3	43		112	107
+14	1	3	44		113	106
+14	1	3	45		-1	-1
+14	1	3	46		112	106
+14	1	3	47		113	105
+14	1	3	48		112	105
+14	1	3	49		113	104
+14	1	3	50		112	104
+14	1	3	51		113	103
+14	1	3	52		112	103
+14	1	3	53		113	102
+14	1	3	54		112	102
+14	1	3	55		113	101
+14	1	3	56		-1	-1
+14	1	3	57		112	101
+14	1	3	58		113	100
+14	1	3	59		112	100
+14	1	3	60		113	99
+14	1	3	61		112	99
+14	1	3	62		113	98
+14	1	3	63		112	98
+14	1	3	64		113	97
+14	1	3	65		112	97
+14	1	3	66		113	96
+14	1	3	67		112	96
+14	2	0	0		116	32
+14	2	0	1		117	32
+14	2	0	2		116	33
+14	2	0	3		117	33
+14	2	0	4		116	34
+14	2	0	5		117	34
+14	2	0	6		116	35
+14	2	0	7		117	35
+14	2	0	8		116	36
+14	2	0	9		117	36
+14	2	0	10		116	37
+14	2	0	11		-1	-1
+14	2	0	12		117	37
+14	2	0	13		116	38
+14	2	0	14		117	38
+14	2	0	15		116	39
+14	2	0	16		117	39
+14	2	0	17		116	40
+14	2	0	18		117	40
+14	2	0	19		116	41
+14	2	0	20		117	41
+14	2	0	21		116	42
+14	2	0	22		-1	-1
+14	2	0	23		117	42
+14	2	0	24		116	43
+14	2	0	25		117	43
+14	2	0	26		116	44
+14	2	0	27		117	44
+14	2	0	28		116	45
+14	2	0	29		117	45
+14	2	0	30		116	46
+14	2	0	31		117	46
+14	2	0	32		116	47
+14	2	0	33		117	47
+14	2	0	34		116	48
+14	2	0	35		117	48
+14	2	0	36		116	49
+14	2	0	37		117	49
+14	2	0	38		116	50
+14	2	0	39		117	50
+14	2	0	40		116	51
+14	2	0	41		117	51
+14	2	0	42		116	52
+14	2	0	43		117	52
+14	2	0	44		116	53
+14	2	0	45		-1	-1
+14	2	0	46		117	53
+14	2	0	47		116	54
+14	2	0	48		117	54
+14	2	0	49		116	55
+14	2	0	50		117	55
+14	2	0	51		116	56
+14	2	0	52		117	56
+14	2	0	53		116	57
+14	2	0	54		117	57
+14	2	0	55		116	58
+14	2	0	56		-1	-1
+14	2	0	57		117	58
+14	2	0	58		116	59
+14	2	0	59		117	59
+14	2	0	60		116	60
+14	2	0	61		117	60
+14	2	0	62		116	61
+14	2	0	63		117	61
+14	2	0	64		116	62
+14	2	0	65		117	62
+14	2	0	66		116	63
+14	2	0	67		117	63
+14	2	1	0		116	0
+14	2	1	1		117	0
+14	2	1	2		116	1
+14	2	1	3		117	1
+14	2	1	4		116	2
+14	2	1	5		117	2
+14	2	1	6		116	3
+14	2	1	7		117	3
+14	2	1	8		116	4
+14	2	1	9		117	4
+14	2	1	10		116	5
+14	2	1	11		-1	-1
+14	2	1	12		117	5
+14	2	1	13		116	6
+14	2	1	14		117	6
+14	2	1	15		116	7
+14	2	1	16		117	7
+14	2	1	17		116	8
+14	2	1	18		117	8
+14	2	1	19		116	9
+14	2	1	20		117	9
+14	2	1	21		116	10
+14	2	1	22		-1	-1
+14	2	1	23		117	10
+14	2	1	24		116	11
+14	2	1	25		117	11
+14	2	1	26		116	12
+14	2	1	27		117	12
+14	2	1	28		116	13
+14	2	1	29		117	13
+14	2	1	30		116	14
+14	2	1	31		117	14
+14	2	1	32		116	15
+14	2	1	33		117	15
+14	2	1	34		116	16
+14	2	1	35		117	16
+14	2	1	36		116	17
+14	2	1	37		117	17
+14	2	1	38		116	18
+14	2	1	39		117	18
+14	2	1	40		116	19
+14	2	1	41		117	19
+14	2	1	42		116	20
+14	2	1	43		117	20
+14	2	1	44		116	21
+14	2	1	45		-1	-1
+14	2	1	46		117	21
+14	2	1	47		116	22
+14	2	1	48		117	22
+14	2	1	49		116	23
+14	2	1	50		117	23
+14	2	1	51		116	24
+14	2	1	52		117	24
+14	2	1	53		116	25
+14	2	1	54		117	25
+14	2	1	55		116	26
+14	2	1	56		-1	-1
+14	2	1	57		117	26
+14	2	1	58		116	27
+14	2	1	59		117	27
+14	2	1	60		116	28
+14	2	1	61		117	28
+14	2	1	62		116	29
+14	2	1	63		117	29
+14	2	1	64		116	30
+14	2	1	65		117	30
+14	2	1	66		116	31
+14	2	1	67		117	31
+14	2	2	0		118	32
+14	2	2	1		119	32
+14	2	2	2		118	33
+14	2	2	3		119	33
+14	2	2	4		118	34
+14	2	2	5		119	34
+14	2	2	6		118	35
+14	2	2	7		119	35
+14	2	2	8		118	36
+14	2	2	9		119	36
+14	2	2	10		118	37
+14	2	2	11		-1	-1
+14	2	2	12		119	37
+14	2	2	13		118	38
+14	2	2	14		119	38
+14	2	2	15		118	39
+14	2	2	16		119	39
+14	2	2	17		118	40
+14	2	2	18		119	40
+14	2	2	19		118	41
+14	2	2	20		119	41
+14	2	2	21		118	42
+14	2	2	22		-1	-1
+14	2	2	23		119	42
+14	2	2	24		118	43
+14	2	2	25		119	43
+14	2	2	26		118	44
+14	2	2	27		119	44
+14	2	2	28		118	45
+14	2	2	29		119	45
+14	2	2	30		118	46
+14	2	2	31		119	46
+14	2	2	32		118	47
+14	2	2	33		119	47
+14	2	2	34		118	48
+14	2	2	35		119	48
+14	2	2	36		118	49
+14	2	2	37		119	49
+14	2	2	38		118	50
+14	2	2	39		119	50
+14	2	2	40		118	51
+14	2	2	41		119	51
+14	2	2	42		118	52
+14	2	2	43		119	52
+14	2	2	44		118	53
+14	2	2	45		-1	-1
+14	2	2	46		119	53
+14	2	2	47		118	54
+14	2	2	48		119	54
+14	2	2	49		118	55
+14	2	2	50		119	55
+14	2	2	51		118	56
+14	2	2	52		119	56
+14	2	2	53		118	57
+14	2	2	54		119	57
+14	2	2	55		118	58
+14	2	2	56		-1	-1
+14	2	2	57		119	58
+14	2	2	58		118	59
+14	2	2	59		119	59
+14	2	2	60		118	60
+14	2	2	61		119	60
+14	2	2	62		118	61
+14	2	2	63		119	61
+14	2	2	64		118	62
+14	2	2	65		119	62
+14	2	2	66		118	63
+14	2	2	67		119	63
+14	2	3	0		118	0
+14	2	3	1		119	0
+14	2	3	2		118	1
+14	2	3	3		119	1
+14	2	3	4		118	2
+14	2	3	5		119	2
+14	2	3	6		118	3
+14	2	3	7		119	3
+14	2	3	8		118	4
+14	2	3	9		119	4
+14	2	3	10		118	5
+14	2	3	11		-1	-1
+14	2	3	12		119	5
+14	2	3	13		118	6
+14	2	3	14		119	6
+14	2	3	15		118	7
+14	2	3	16		119	7
+14	2	3	17		118	8
+14	2	3	18		119	8
+14	2	3	19		118	9
+14	2	3	20		119	9
+14	2	3	21		118	10
+14	2	3	22		-1	-1
+14	2	3	23		119	10
+14	2	3	24		118	11
+14	2	3	25		119	11
+14	2	3	26		118	12
+14	2	3	27		119	12
+14	2	3	28		118	13
+14	2	3	29		119	13
+14	2	3	30		118	14
+14	2	3	31		119	14
+14	2	3	32		118	15
+14	2	3	33		119	15
+14	2	3	34		118	16
+14	2	3	35		119	16
+14	2	3	36		118	17
+14	2	3	37		119	17
+14	2	3	38		118	18
+14	2	3	39		119	18
+14	2	3	40		118	19
+14	2	3	41		119	19
+14	2	3	42		118	20
+14	2	3	43		119	20
+14	2	3	44		118	21
+14	2	3	45		-1	-1
+14	2	3	46		119	21
+14	2	3	47		118	22
+14	2	3	48		119	22
+14	2	3	49		118	23
+14	2	3	50		119	23
+14	2	3	51		118	24
+14	2	3	52		119	24
+14	2	3	53		118	25
+14	2	3	54		119	25
+14	2	3	55		118	26
+14	2	3	56		-1	-1
+14	2	3	57		119	26
+14	2	3	58		118	27
+14	2	3	59		119	27
+14	2	3	60		118	28
+14	2	3	61		119	28
+14	2	3	62		118	29
+14	2	3	63		119	29
+14	2	3	64		118	30
+14	2	3	65		119	30
+14	2	3	66		118	31
+14	2	3	67		119	31
+14	3	0	0		119	95
+14	3	0	1		118	95
+14	3	0	2		119	94
+14	3	0	3		118	94
+14	3	0	4		119	93
+14	3	0	5		118	93
+14	3	0	6		119	92
+14	3	0	7		118	92
+14	3	0	8		119	91
+14	3	0	9		118	91
+14	3	0	10		119	90
+14	3	0	11		-1	-1
+14	3	0	12		118	90
+14	3	0	13		119	89
+14	3	0	14		118	89
+14	3	0	15		119	88
+14	3	0	16		118	88
+14	3	0	17		119	87
+14	3	0	18		118	87
+14	3	0	19		119	86
+14	3	0	20		118	86
+14	3	0	21		119	85
+14	3	0	22		-1	-1
+14	3	0	23		118	85
+14	3	0	24		119	84
+14	3	0	25		118	84
+14	3	0	26		119	83
+14	3	0	27		118	83
+14	3	0	28		119	82
+14	3	0	29		118	82
+14	3	0	30		119	81
+14	3	0	31		118	81
+14	3	0	32		119	80
+14	3	0	33		118	80
+14	3	0	34		119	79
+14	3	0	35		118	79
+14	3	0	36		119	78
+14	3	0	37		118	78
+14	3	0	38		119	77
+14	3	0	39		118	77
+14	3	0	40		119	76
+14	3	0	41		118	76
+14	3	0	42		119	75
+14	3	0	43		118	75
+14	3	0	44		119	74
+14	3	0	45		-1	-1
+14	3	0	46		118	74
+14	3	0	47		119	73
+14	3	0	48		118	73
+14	3	0	49		119	72
+14	3	0	50		118	72
+14	3	0	51		119	71
+14	3	0	52		118	71
+14	3	0	53		119	70
+14	3	0	54		118	70
+14	3	0	55		119	69
+14	3	0	56		-1	-1
+14	3	0	57		118	69
+14	3	0	58		119	68
+14	3	0	59		118	68
+14	3	0	60		119	67
+14	3	0	61		118	67
+14	3	0	62		119	66
+14	3	0	63		118	66
+14	3	0	64		119	65
+14	3	0	65		118	65
+14	3	0	66		119	64
+14	3	0	67		118	64
+14	3	1	0		119	127
+14	3	1	1		118	127
+14	3	1	2		119	126
+14	3	1	3		118	126
+14	3	1	4		119	125
+14	3	1	5		118	125
+14	3	1	6		119	124
+14	3	1	7		118	124
+14	3	1	8		119	123
+14	3	1	9		118	123
+14	3	1	10		119	122
+14	3	1	11		-1	-1
+14	3	1	12		118	122
+14	3	1	13		119	121
+14	3	1	14		118	121
+14	3	1	15		119	120
+14	3	1	16		118	120
+14	3	1	17		119	119
+14	3	1	18		118	119
+14	3	1	19		119	118
+14	3	1	20		118	118
+14	3	1	21		119	117
+14	3	1	22		-1	-1
+14	3	1	23		118	117
+14	3	1	24		119	116
+14	3	1	25		118	116
+14	3	1	26		119	115
+14	3	1	27		118	115
+14	3	1	28		119	114
+14	3	1	29		118	114
+14	3	1	30		119	113
+14	3	1	31		118	113
+14	3	1	32		119	112
+14	3	1	33		118	112
+14	3	1	34		119	111
+14	3	1	35		118	111
+14	3	1	36		119	110
+14	3	1	37		118	110
+14	3	1	38		119	109
+14	3	1	39		118	109
+14	3	1	40		119	108
+14	3	1	41		118	108
+14	3	1	42		119	107
+14	3	1	43		118	107
+14	3	1	44		119	106
+14	3	1	45		-1	-1
+14	3	1	46		118	106
+14	3	1	47		119	105
+14	3	1	48		118	105
+14	3	1	49		119	104
+14	3	1	50		118	104
+14	3	1	51		119	103
+14	3	1	52		118	103
+14	3	1	53		119	102
+14	3	1	54		118	102
+14	3	1	55		119	101
+14	3	1	56		-1	-1
+14	3	1	57		118	101
+14	3	1	58		119	100
+14	3	1	59		118	100
+14	3	1	60		119	99
+14	3	1	61		118	99
+14	3	1	62		119	98
+14	3	1	63		118	98
+14	3	1	64		119	97
+14	3	1	65		118	97
+14	3	1	66		119	96
+14	3	1	67		118	96
+14	3	2	0		117	95
+14	3	2	1		116	95
+14	3	2	2		117	94
+14	3	2	3		116	94
+14	3	2	4		117	93
+14	3	2	5		116	93
+14	3	2	6		117	92
+14	3	2	7		116	92
+14	3	2	8		117	91
+14	3	2	9		116	91
+14	3	2	10		117	90
+14	3	2	11		-1	-1
+14	3	2	12		116	90
+14	3	2	13		117	89
+14	3	2	14		116	89
+14	3	2	15		117	88
+14	3	2	16		116	88
+14	3	2	17		117	87
+14	3	2	18		116	87
+14	3	2	19		117	86
+14	3	2	20		116	86
+14	3	2	21		117	85
+14	3	2	22		-1	-1
+14	3	2	23		116	85
+14	3	2	24		117	84
+14	3	2	25		116	84
+14	3	2	26		117	83
+14	3	2	27		116	83
+14	3	2	28		117	82
+14	3	2	29		116	82
+14	3	2	30		117	81
+14	3	2	31		116	81
+14	3	2	32		117	80
+14	3	2	33		116	80
+14	3	2	34		117	79
+14	3	2	35		116	79
+14	3	2	36		117	78
+14	3	2	37		116	78
+14	3	2	38		117	77
+14	3	2	39		116	77
+14	3	2	40		117	76
+14	3	2	41		116	76
+14	3	2	42		117	75
+14	3	2	43		116	75
+14	3	2	44		117	74
+14	3	2	45		-1	-1
+14	3	2	46		116	74
+14	3	2	47		117	73
+14	3	2	48		116	73
+14	3	2	49		117	72
+14	3	2	50		116	72
+14	3	2	51		117	71
+14	3	2	52		116	71
+14	3	2	53		117	70
+14	3	2	54		116	70
+14	3	2	55		117	69
+14	3	2	56		-1	-1
+14	3	2	57		116	69
+14	3	2	58		117	68
+14	3	2	59		116	68
+14	3	2	60		117	67
+14	3	2	61		116	67
+14	3	2	62		117	66
+14	3	2	63		116	66
+14	3	2	64		117	65
+14	3	2	65		116	65
+14	3	2	66		117	64
+14	3	2	67		116	64
+14	3	3	0		117	127
+14	3	3	1		116	127
+14	3	3	2		117	126
+14	3	3	3		116	126
+14	3	3	4		117	125
+14	3	3	5		116	125
+14	3	3	6		117	124
+14	3	3	7		116	124
+14	3	3	8		117	123
+14	3	3	9		116	123
+14	3	3	10		117	122
+14	3	3	11		-1	-1
+14	3	3	12		116	122
+14	3	3	13		117	121
+14	3	3	14		116	121
+14	3	3	15		117	120
+14	3	3	16		116	120
+14	3	3	17		117	119
+14	3	3	18		116	119
+14	3	3	19		117	118
+14	3	3	20		116	118
+14	3	3	21		117	117
+14	3	3	22		-1	-1
+14	3	3	23		116	117
+14	3	3	24		117	116
+14	3	3	25		116	116
+14	3	3	26		117	115
+14	3	3	27		116	115
+14	3	3	28		117	114
+14	3	3	29		116	114
+14	3	3	30		117	113
+14	3	3	31		116	113
+14	3	3	32		117	112
+14	3	3	33		116	112
+14	3	3	34		117	111
+14	3	3	35		116	111
+14	3	3	36		117	110
+14	3	3	37		116	110
+14	3	3	38		117	109
+14	3	3	39		116	109
+14	3	3	40		117	108
+14	3	3	41		116	108
+14	3	3	42		117	107
+14	3	3	43		116	107
+14	3	3	44		117	106
+14	3	3	45		-1	-1
+14	3	3	46		116	106
+14	3	3	47		117	105
+14	3	3	48		116	105
+14	3	3	49		117	104
+14	3	3	50		116	104
+14	3	3	51		117	103
+14	3	3	52		116	103
+14	3	3	53		117	102
+14	3	3	54		116	102
+14	3	3	55		117	101
+14	3	3	56		-1	-1
+14	3	3	57		116	101
+14	3	3	58		117	100
+14	3	3	59		116	100
+14	3	3	60		117	99
+14	3	3	61		116	99
+14	3	3	62		117	98
+14	3	3	63		116	98
+14	3	3	64		117	97
+14	3	3	65		116	97
+14	3	3	66		117	96
+14	3	3	67		116	96
+15	0	0	0		120	32
+15	0	0	1		121	32
+15	0	0	2		120	33
+15	0	0	3		121	33
+15	0	0	4		120	34
+15	0	0	5		121	34
+15	0	0	6		120	35
+15	0	0	7		121	35
+15	0	0	8		120	36
+15	0	0	9		121	36
+15	0	0	10		120	37
+15	0	0	11		-1	-1
+15	0	0	12		121	37
+15	0	0	13		120	38
+15	0	0	14		121	38
+15	0	0	15		120	39
+15	0	0	16		121	39
+15	0	0	17		120	40
+15	0	0	18		121	40
+15	0	0	19		120	41
+15	0	0	20		121	41
+15	0	0	21		120	42
+15	0	0	22		-1	-1
+15	0	0	23		121	42
+15	0	0	24		120	43
+15	0	0	25		121	43
+15	0	0	26		120	44
+15	0	0	27		121	44
+15	0	0	28		120	45
+15	0	0	29		121	45
+15	0	0	30		120	46
+15	0	0	31		121	46
+15	0	0	32		120	47
+15	0	0	33		121	47
+15	0	0	34		120	48
+15	0	0	35		121	48
+15	0	0	36		120	49
+15	0	0	37		121	49
+15	0	0	38		120	50
+15	0	0	39		121	50
+15	0	0	40		120	51
+15	0	0	41		121	51
+15	0	0	42		120	52
+15	0	0	43		121	52
+15	0	0	44		120	53
+15	0	0	45		-1	-1
+15	0	0	46		121	53
+15	0	0	47		120	54
+15	0	0	48		121	54
+15	0	0	49		120	55
+15	0	0	50		121	55
+15	0	0	51		120	56
+15	0	0	52		121	56
+15	0	0	53		120	57
+15	0	0	54		121	57
+15	0	0	55		120	58
+15	0	0	56		-1	-1
+15	0	0	57		121	58
+15	0	0	58		120	59
+15	0	0	59		121	59
+15	0	0	60		120	60
+15	0	0	61		121	60
+15	0	0	62		120	61
+15	0	0	63		121	61
+15	0	0	64		120	62
+15	0	0	65		121	62
+15	0	0	66		120	63
+15	0	0	67		121	63
+15	0	1	0		120	0
+15	0	1	1		121	0
+15	0	1	2		120	1
+15	0	1	3		121	1
+15	0	1	4		120	2
+15	0	1	5		121	2
+15	0	1	6		120	3
+15	0	1	7		121	3
+15	0	1	8		120	4
+15	0	1	9		121	4
+15	0	1	10		120	5
+15	0	1	11		-1	-1
+15	0	1	12		121	5
+15	0	1	13		120	6
+15	0	1	14		121	6
+15	0	1	15		120	7
+15	0	1	16		121	7
+15	0	1	17		120	8
+15	0	1	18		121	8
+15	0	1	19		120	9
+15	0	1	20		121	9
+15	0	1	21		120	10
+15	0	1	22		-1	-1
+15	0	1	23		121	10
+15	0	1	24		120	11
+15	0	1	25		121	11
+15	0	1	26		120	12
+15	0	1	27		121	12
+15	0	1	28		120	13
+15	0	1	29		121	13
+15	0	1	30		120	14
+15	0	1	31		121	14
+15	0	1	32		120	15
+15	0	1	33		121	15
+15	0	1	34		120	16
+15	0	1	35		121	16
+15	0	1	36		120	17
+15	0	1	37		121	17
+15	0	1	38		120	18
+15	0	1	39		121	18
+15	0	1	40		120	19
+15	0	1	41		121	19
+15	0	1	42		120	20
+15	0	1	43		121	20
+15	0	1	44		120	21
+15	0	1	45		-1	-1
+15	0	1	46		121	21
+15	0	1	47		120	22
+15	0	1	48		121	22
+15	0	1	49		120	23
+15	0	1	50		121	23
+15	0	1	51		120	24
+15	0	1	52		121	24
+15	0	1	53		120	25
+15	0	1	54		121	25
+15	0	1	55		120	26
+15	0	1	56		-1	-1
+15	0	1	57		121	26
+15	0	1	58		120	27
+15	0	1	59		121	27
+15	0	1	60		120	28
+15	0	1	61		121	28
+15	0	1	62		120	29
+15	0	1	63		121	29
+15	0	1	64		120	30
+15	0	1	65		121	30
+15	0	1	66		120	31
+15	0	1	67		121	31
+15	0	2	0		122	32
+15	0	2	1		123	32
+15	0	2	2		122	33
+15	0	2	3		123	33
+15	0	2	4		122	34
+15	0	2	5		123	34
+15	0	2	6		122	35
+15	0	2	7		123	35
+15	0	2	8		122	36
+15	0	2	9		123	36
+15	0	2	10		122	37
+15	0	2	11		-1	-1
+15	0	2	12		123	37
+15	0	2	13		122	38
+15	0	2	14		123	38
+15	0	2	15		122	39
+15	0	2	16		123	39
+15	0	2	17		122	40
+15	0	2	18		123	40
+15	0	2	19		122	41
+15	0	2	20		123	41
+15	0	2	21		122	42
+15	0	2	22		-1	-1
+15	0	2	23		123	42
+15	0	2	24		122	43
+15	0	2	25		123	43
+15	0	2	26		122	44
+15	0	2	27		123	44
+15	0	2	28		122	45
+15	0	2	29		123	45
+15	0	2	30		122	46
+15	0	2	31		123	46
+15	0	2	32		122	47
+15	0	2	33		123	47
+15	0	2	34		122	48
+15	0	2	35		123	48
+15	0	2	36		122	49
+15	0	2	37		123	49
+15	0	2	38		122	50
+15	0	2	39		123	50
+15	0	2	40		122	51
+15	0	2	41		123	51
+15	0	2	42		122	52
+15	0	2	43		123	52
+15	0	2	44		122	53
+15	0	2	45		-1	-1
+15	0	2	46		123	53
+15	0	2	47		122	54
+15	0	2	48		123	54
+15	0	2	49		122	55
+15	0	2	50		123	55
+15	0	2	51		122	56
+15	0	2	52		123	56
+15	0	2	53		122	57
+15	0	2	54		123	57
+15	0	2	55		122	58
+15	0	2	56		-1	-1
+15	0	2	57		123	58
+15	0	2	58		122	59
+15	0	2	59		123	59
+15	0	2	60		122	60
+15	0	2	61		123	60
+15	0	2	62		122	61
+15	0	2	63		123	61
+15	0	2	64		122	62
+15	0	2	65		123	62
+15	0	2	66		122	63
+15	0	2	67		123	63
+15	0	3	0		122	0
+15	0	3	1		123	0
+15	0	3	2		122	1
+15	0	3	3		123	1
+15	0	3	4		122	2
+15	0	3	5		123	2
+15	0	3	6		122	3
+15	0	3	7		123	3
+15	0	3	8		122	4
+15	0	3	9		123	4
+15	0	3	10		122	5
+15	0	3	11		-1	-1
+15	0	3	12		123	5
+15	0	3	13		122	6
+15	0	3	14		123	6
+15	0	3	15		122	7
+15	0	3	16		123	7
+15	0	3	17		122	8
+15	0	3	18		123	8
+15	0	3	19		122	9
+15	0	3	20		123	9
+15	0	3	21		122	10
+15	0	3	22		-1	-1
+15	0	3	23		123	10
+15	0	3	24		122	11
+15	0	3	25		123	11
+15	0	3	26		122	12
+15	0	3	27		123	12
+15	0	3	28		122	13
+15	0	3	29		123	13
+15	0	3	30		122	14
+15	0	3	31		123	14
+15	0	3	32		122	15
+15	0	3	33		123	15
+15	0	3	34		122	16
+15	0	3	35		123	16
+15	0	3	36		122	17
+15	0	3	37		123	17
+15	0	3	38		122	18
+15	0	3	39		123	18
+15	0	3	40		122	19
+15	0	3	41		123	19
+15	0	3	42		122	20
+15	0	3	43		123	20
+15	0	3	44		122	21
+15	0	3	45		-1	-1
+15	0	3	46		123	21
+15	0	3	47		122	22
+15	0	3	48		123	22
+15	0	3	49		122	23
+15	0	3	50		123	23
+15	0	3	51		122	24
+15	0	3	52		123	24
+15	0	3	53		122	25
+15	0	3	54		123	25
+15	0	3	55		122	26
+15	0	3	56		-1	-1
+15	0	3	57		123	26
+15	0	3	58		122	27
+15	0	3	59		123	27
+15	0	3	60		122	28
+15	0	3	61		123	28
+15	0	3	62		122	29
+15	0	3	63		123	29
+15	0	3	64		122	30
+15	0	3	65		123	30
+15	0	3	66		122	31
+15	0	3	67		123	31
+15	1	0	0		123	95
+15	1	0	1		122	95
+15	1	0	2		123	94
+15	1	0	3		122	94
+15	1	0	4		123	93
+15	1	0	5		122	93
+15	1	0	6		123	92
+15	1	0	7		122	92
+15	1	0	8		123	91
+15	1	0	9		122	91
+15	1	0	10		123	90
+15	1	0	11		-1	-1
+15	1	0	12		122	90
+15	1	0	13		123	89
+15	1	0	14		122	89
+15	1	0	15		123	88
+15	1	0	16		122	88
+15	1	0	17		123	87
+15	1	0	18		122	87
+15	1	0	19		123	86
+15	1	0	20		122	86
+15	1	0	21		123	85
+15	1	0	22		-1	-1
+15	1	0	23		122	85
+15	1	0	24		123	84
+15	1	0	25		122	84
+15	1	0	26		123	83
+15	1	0	27		122	83
+15	1	0	28		123	82
+15	1	0	29		122	82
+15	1	0	30		123	81
+15	1	0	31		122	81
+15	1	0	32		123	80
+15	1	0	33		122	80
+15	1	0	34		123	79
+15	1	0	35		122	79
+15	1	0	36		123	78
+15	1	0	37		122	78
+15	1	0	38		123	77
+15	1	0	39		122	77
+15	1	0	40		123	76
+15	1	0	41		122	76
+15	1	0	42		123	75
+15	1	0	43		122	75
+15	1	0	44		123	74
+15	1	0	45		-1	-1
+15	1	0	46		122	74
+15	1	0	47		123	73
+15	1	0	48		122	73
+15	1	0	49		123	72
+15	1	0	50		122	72
+15	1	0	51		123	71
+15	1	0	52		122	71
+15	1	0	53		123	70
+15	1	0	54		122	70
+15	1	0	55		123	69
+15	1	0	56		-1	-1
+15	1	0	57		122	69
+15	1	0	58		123	68
+15	1	0	59		122	68
+15	1	0	60		123	67
+15	1	0	61		122	67
+15	1	0	62		123	66
+15	1	0	63		122	66
+15	1	0	64		123	65
+15	1	0	65		122	65
+15	1	0	66		123	64
+15	1	0	67		122	64
+15	1	1	0		123	127
+15	1	1	1		122	127
+15	1	1	2		123	126
+15	1	1	3		122	126
+15	1	1	4		123	125
+15	1	1	5		122	125
+15	1	1	6		123	124
+15	1	1	7		122	124
+15	1	1	8		123	123
+15	1	1	9		122	123
+15	1	1	10		123	122
+15	1	1	11		-1	-1
+15	1	1	12		122	122
+15	1	1	13		123	121
+15	1	1	14		122	121
+15	1	1	15		123	120
+15	1	1	16		122	120
+15	1	1	17		123	119
+15	1	1	18		122	119
+15	1	1	19		123	118
+15	1	1	20		122	118
+15	1	1	21		123	117
+15	1	1	22		-1	-1
+15	1	1	23		122	117
+15	1	1	24		123	116
+15	1	1	25		122	116
+15	1	1	26		123	115
+15	1	1	27		122	115
+15	1	1	28		123	114
+15	1	1	29		122	114
+15	1	1	30		123	113
+15	1	1	31		122	113
+15	1	1	32		123	112
+15	1	1	33		122	112
+15	1	1	34		123	111
+15	1	1	35		122	111
+15	1	1	36		123	110
+15	1	1	37		122	110
+15	1	1	38		123	109
+15	1	1	39		122	109
+15	1	1	40		123	108
+15	1	1	41		122	108
+15	1	1	42		123	107
+15	1	1	43		122	107
+15	1	1	44		123	106
+15	1	1	45		-1	-1
+15	1	1	46		122	106
+15	1	1	47		123	105
+15	1	1	48		122	105
+15	1	1	49		123	104
+15	1	1	50		122	104
+15	1	1	51		123	103
+15	1	1	52		122	103
+15	1	1	53		123	102
+15	1	1	54		122	102
+15	1	1	55		123	101
+15	1	1	56		-1	-1
+15	1	1	57		122	101
+15	1	1	58		123	100
+15	1	1	59		122	100
+15	1	1	60		123	99
+15	1	1	61		122	99
+15	1	1	62		123	98
+15	1	1	63		122	98
+15	1	1	64		123	97
+15	1	1	65		122	97
+15	1	1	66		123	96
+15	1	1	67		122	96
+15	1	2	0		121	95
+15	1	2	1		120	95
+15	1	2	2		121	94
+15	1	2	3		120	94
+15	1	2	4		121	93
+15	1	2	5		120	93
+15	1	2	6		121	92
+15	1	2	7		120	92
+15	1	2	8		121	91
+15	1	2	9		120	91
+15	1	2	10		121	90
+15	1	2	11		-1	-1
+15	1	2	12		120	90
+15	1	2	13		121	89
+15	1	2	14		120	89
+15	1	2	15		121	88
+15	1	2	16		120	88
+15	1	2	17		121	87
+15	1	2	18		120	87
+15	1	2	19		121	86
+15	1	2	20		120	86
+15	1	2	21		121	85
+15	1	2	22		-1	-1
+15	1	2	23		120	85
+15	1	2	24		121	84
+15	1	2	25		120	84
+15	1	2	26		121	83
+15	1	2	27		120	83
+15	1	2	28		121	82
+15	1	2	29		120	82
+15	1	2	30		121	81
+15	1	2	31		120	81
+15	1	2	32		121	80
+15	1	2	33		120	80
+15	1	2	34		121	79
+15	1	2	35		120	79
+15	1	2	36		121	78
+15	1	2	37		120	78
+15	1	2	38		121	77
+15	1	2	39		120	77
+15	1	2	40		121	76
+15	1	2	41		120	76
+15	1	2	42		121	75
+15	1	2	43		120	75
+15	1	2	44		121	74
+15	1	2	45		-1	-1
+15	1	2	46		120	74
+15	1	2	47		121	73
+15	1	2	48		120	73
+15	1	2	49		121	72
+15	1	2	50		120	72
+15	1	2	51		121	71
+15	1	2	52		120	71
+15	1	2	53		121	70
+15	1	2	54		120	70
+15	1	2	55		121	69
+15	1	2	56		-1	-1
+15	1	2	57		120	69
+15	1	2	58		121	68
+15	1	2	59		120	68
+15	1	2	60		121	67
+15	1	2	61		120	67
+15	1	2	62		121	66
+15	1	2	63		120	66
+15	1	2	64		121	65
+15	1	2	65		120	65
+15	1	2	66		121	64
+15	1	2	67		120	64
+15	1	3	0		121	127
+15	1	3	1		120	127
+15	1	3	2		121	126
+15	1	3	3		120	126
+15	1	3	4		121	125
+15	1	3	5		120	125
+15	1	3	6		121	124
+15	1	3	7		120	124
+15	1	3	8		121	123
+15	1	3	9		120	123
+15	1	3	10		121	122
+15	1	3	11		-1	-1
+15	1	3	12		120	122
+15	1	3	13		121	121
+15	1	3	14		120	121
+15	1	3	15		121	120
+15	1	3	16		120	120
+15	1	3	17		121	119
+15	1	3	18		120	119
+15	1	3	19		121	118
+15	1	3	20		120	118
+15	1	3	21		121	117
+15	1	3	22		-1	-1
+15	1	3	23		120	117
+15	1	3	24		121	116
+15	1	3	25		120	116
+15	1	3	26		121	115
+15	1	3	27		120	115
+15	1	3	28		121	114
+15	1	3	29		120	114
+15	1	3	30		121	113
+15	1	3	31		120	113
+15	1	3	32		121	112
+15	1	3	33		120	112
+15	1	3	34		121	111
+15	1	3	35		120	111
+15	1	3	36		121	110
+15	1	3	37		120	110
+15	1	3	38		121	109
+15	1	3	39		120	109
+15	1	3	40		121	108
+15	1	3	41		120	108
+15	1	3	42		121	107
+15	1	3	43		120	107
+15	1	3	44		121	106
+15	1	3	45		-1	-1
+15	1	3	46		120	106
+15	1	3	47		121	105
+15	1	3	48		120	105
+15	1	3	49		121	104
+15	1	3	50		120	104
+15	1	3	51		121	103
+15	1	3	52		120	103
+15	1	3	53		121	102
+15	1	3	54		120	102
+15	1	3	55		121	101
+15	1	3	56		-1	-1
+15	1	3	57		120	101
+15	1	3	58		121	100
+15	1	3	59		120	100
+15	1	3	60		121	99
+15	1	3	61		120	99
+15	1	3	62		121	98
+15	1	3	63		120	98
+15	1	3	64		121	97
+15	1	3	65		120	97
+15	1	3	66		121	96
+15	1	3	67		120	96
+15	2	0	0		124	32
+15	2	0	1		125	32
+15	2	0	2		124	33
+15	2	0	3		125	33
+15	2	0	4		124	34
+15	2	0	5		125	34
+15	2	0	6		124	35
+15	2	0	7		125	35
+15	2	0	8		124	36
+15	2	0	9		125	36
+15	2	0	10		124	37
+15	2	0	11		-1	-1
+15	2	0	12		125	37
+15	2	0	13		124	38
+15	2	0	14		125	38
+15	2	0	15		124	39
+15	2	0	16		125	39
+15	2	0	17		124	40
+15	2	0	18		125	40
+15	2	0	19		124	41
+15	2	0	20		125	41
+15	2	0	21		124	42
+15	2	0	22		-1	-1
+15	2	0	23		125	42
+15	2	0	24		124	43
+15	2	0	25		125	43
+15	2	0	26		124	44
+15	2	0	27		125	44
+15	2	0	28		124	45
+15	2	0	29		125	45
+15	2	0	30		124	46
+15	2	0	31		125	46
+15	2	0	32		124	47
+15	2	0	33		125	47
+15	2	0	34		124	48
+15	2	0	35		125	48
+15	2	0	36		124	49
+15	2	0	37		125	49
+15	2	0	38		124	50
+15	2	0	39		125	50
+15	2	0	40		124	51
+15	2	0	41		125	51
+15	2	0	42		124	52
+15	2	0	43		125	52
+15	2	0	44		124	53
+15	2	0	45		-1	-1
+15	2	0	46		125	53
+15	2	0	47		124	54
+15	2	0	48		125	54
+15	2	0	49		124	55
+15	2	0	50		125	55
+15	2	0	51		124	56
+15	2	0	52		125	56
+15	2	0	53		124	57
+15	2	0	54		125	57
+15	2	0	55		124	58
+15	2	0	56		-1	-1
+15	2	0	57		125	58
+15	2	0	58		124	59
+15	2	0	59		125	59
+15	2	0	60		124	60
+15	2	0	61		125	60
+15	2	0	62		124	61
+15	2	0	63		125	61
+15	2	0	64		124	62
+15	2	0	65		125	62
+15	2	0	66		124	63
+15	2	0	67		125	63
+15	2	1	0		124	0
+15	2	1	1		125	0
+15	2	1	2		124	1
+15	2	1	3		125	1
+15	2	1	4		124	2
+15	2	1	5		125	2
+15	2	1	6		124	3
+15	2	1	7		125	3
+15	2	1	8		124	4
+15	2	1	9		125	4
+15	2	1	10		124	5
+15	2	1	11		-1	-1
+15	2	1	12		125	5
+15	2	1	13		124	6
+15	2	1	14		125	6
+15	2	1	15		124	7
+15	2	1	16		125	7
+15	2	1	17		124	8
+15	2	1	18		125	8
+15	2	1	19		124	9
+15	2	1	20		125	9
+15	2	1	21		124	10
+15	2	1	22		-1	-1
+15	2	1	23		125	10
+15	2	1	24		124	11
+15	2	1	25		125	11
+15	2	1	26		124	12
+15	2	1	27		125	12
+15	2	1	28		124	13
+15	2	1	29		125	13
+15	2	1	30		124	14
+15	2	1	31		125	14
+15	2	1	32		124	15
+15	2	1	33		125	15
+15	2	1	34		124	16
+15	2	1	35		125	16
+15	2	1	36		124	17
+15	2	1	37		125	17
+15	2	1	38		124	18
+15	2	1	39		125	18
+15	2	1	40		124	19
+15	2	1	41		125	19
+15	2	1	42		124	20
+15	2	1	43		125	20
+15	2	1	44		124	21
+15	2	1	45		-1	-1
+15	2	1	46		125	21
+15	2	1	47		124	22
+15	2	1	48		125	22
+15	2	1	49		124	23
+15	2	1	50		125	23
+15	2	1	51		124	24
+15	2	1	52		125	24
+15	2	1	53		124	25
+15	2	1	54		125	25
+15	2	1	55		124	26
+15	2	1	56		-1	-1
+15	2	1	57		125	26
+15	2	1	58		124	27
+15	2	1	59		125	27
+15	2	1	60		124	28
+15	2	1	61		125	28
+15	2	1	62		124	29
+15	2	1	63		125	29
+15	2	1	64		124	30
+15	2	1	65		125	30
+15	2	1	66		124	31
+15	2	1	67		125	31
+15	2	2	0		126	32
+15	2	2	1		127	32
+15	2	2	2		126	33
+15	2	2	3		127	33
+15	2	2	4		126	34
+15	2	2	5		127	34
+15	2	2	6		126	35
+15	2	2	7		127	35
+15	2	2	8		126	36
+15	2	2	9		127	36
+15	2	2	10		126	37
+15	2	2	11		-1	-1
+15	2	2	12		127	37
+15	2	2	13		126	38
+15	2	2	14		127	38
+15	2	2	15		126	39
+15	2	2	16		127	39
+15	2	2	17		126	40
+15	2	2	18		127	40
+15	2	2	19		126	41
+15	2	2	20		127	41
+15	2	2	21		126	42
+15	2	2	22		-1	-1
+15	2	2	23		127	42
+15	2	2	24		126	43
+15	2	2	25		127	43
+15	2	2	26		126	44
+15	2	2	27		127	44
+15	2	2	28		126	45
+15	2	2	29		127	45
+15	2	2	30		126	46
+15	2	2	31		127	46
+15	2	2	32		126	47
+15	2	2	33		127	47
+15	2	2	34		126	48
+15	2	2	35		127	48
+15	2	2	36		126	49
+15	2	2	37		127	49
+15	2	2	38		126	50
+15	2	2	39		127	50
+15	2	2	40		126	51
+15	2	2	41		127	51
+15	2	2	42		126	52
+15	2	2	43		127	52
+15	2	2	44		126	53
+15	2	2	45		-1	-1
+15	2	2	46		127	53
+15	2	2	47		126	54
+15	2	2	48		127	54
+15	2	2	49		126	55
+15	2	2	50		127	55
+15	2	2	51		126	56
+15	2	2	52		127	56
+15	2	2	53		126	57
+15	2	2	54		127	57
+15	2	2	55		126	58
+15	2	2	56		-1	-1
+15	2	2	57		127	58
+15	2	2	58		126	59
+15	2	2	59		127	59
+15	2	2	60		126	60
+15	2	2	61		127	60
+15	2	2	62		126	61
+15	2	2	63		127	61
+15	2	2	64		126	62
+15	2	2	65		127	62
+15	2	2	66		126	63
+15	2	2	67		127	63
+15	2	3	0		126	0
+15	2	3	1		127	0
+15	2	3	2		126	1
+15	2	3	3		127	1
+15	2	3	4		126	2
+15	2	3	5		127	2
+15	2	3	6		126	3
+15	2	3	7		127	3
+15	2	3	8		126	4
+15	2	3	9		127	4
+15	2	3	10		126	5
+15	2	3	11		-1	-1
+15	2	3	12		127	5
+15	2	3	13		126	6
+15	2	3	14		127	6
+15	2	3	15		126	7
+15	2	3	16		127	7
+15	2	3	17		126	8
+15	2	3	18		127	8
+15	2	3	19		126	9
+15	2	3	20		127	9
+15	2	3	21		126	10
+15	2	3	22		-1	-1
+15	2	3	23		127	10
+15	2	3	24		126	11
+15	2	3	25		127	11
+15	2	3	26		126	12
+15	2	3	27		127	12
+15	2	3	28		126	13
+15	2	3	29		127	13
+15	2	3	30		126	14
+15	2	3	31		127	14
+15	2	3	32		126	15
+15	2	3	33		127	15
+15	2	3	34		126	16
+15	2	3	35		127	16
+15	2	3	36		126	17
+15	2	3	37		127	17
+15	2	3	38		126	18
+15	2	3	39		127	18
+15	2	3	40		126	19
+15	2	3	41		127	19
+15	2	3	42		126	20
+15	2	3	43		127	20
+15	2	3	44		126	21
+15	2	3	45		-1	-1
+15	2	3	46		127	21
+15	2	3	47		126	22
+15	2	3	48		127	22
+15	2	3	49		126	23
+15	2	3	50		127	23
+15	2	3	51		126	24
+15	2	3	52		127	24
+15	2	3	53		126	25
+15	2	3	54		127	25
+15	2	3	55		126	26
+15	2	3	56		-1	-1
+15	2	3	57		127	26
+15	2	3	58		126	27
+15	2	3	59		127	27
+15	2	3	60		126	28
+15	2	3	61		127	28
+15	2	3	62		126	29
+15	2	3	63		127	29
+15	2	3	64		126	30
+15	2	3	65		127	30
+15	2	3	66		126	31
+15	2	3	67		127	31
+15	3	0	0		127	95
+15	3	0	1		126	95
+15	3	0	2		127	94
+15	3	0	3		126	94
+15	3	0	4		127	93
+15	3	0	5		126	93
+15	3	0	6		127	92
+15	3	0	7		126	92
+15	3	0	8		127	91
+15	3	0	9		126	91
+15	3	0	10		127	90
+15	3	0	11		-1	-1
+15	3	0	12		126	90
+15	3	0	13		127	89
+15	3	0	14		126	89
+15	3	0	15		127	88
+15	3	0	16		126	88
+15	3	0	17		127	87
+15	3	0	18		126	87
+15	3	0	19		127	86
+15	3	0	20		126	86
+15	3	0	21		127	85
+15	3	0	22		-1	-1
+15	3	0	23		126	85
+15	3	0	24		127	84
+15	3	0	25		126	84
+15	3	0	26		127	83
+15	3	0	27		126	83
+15	3	0	28		127	82
+15	3	0	29		126	82
+15	3	0	30		127	81
+15	3	0	31		126	81
+15	3	0	32		127	80
+15	3	0	33		126	80
+15	3	0	34		127	79
+15	3	0	35		126	79
+15	3	0	36		127	78
+15	3	0	37		126	78
+15	3	0	38		127	77
+15	3	0	39		126	77
+15	3	0	40		127	76
+15	3	0	41		126	76
+15	3	0	42		127	75
+15	3	0	43		126	75
+15	3	0	44		127	74
+15	3	0	45		-1	-1
+15	3	0	46		126	74
+15	3	0	47		127	73
+15	3	0	48		126	73
+15	3	0	49		127	72
+15	3	0	50		126	72
+15	3	0	51		127	71
+15	3	0	52		126	71
+15	3	0	53		127	70
+15	3	0	54		126	70
+15	3	0	55		127	69
+15	3	0	56		-1	-1
+15	3	0	57		126	69
+15	3	0	58		127	68
+15	3	0	59		126	68
+15	3	0	60		127	67
+15	3	0	61		126	67
+15	3	0	62		127	66
+15	3	0	63		126	66
+15	3	0	64		127	65
+15	3	0	65		126	65
+15	3	0	66		127	64
+15	3	0	67		126	64
+15	3	1	0		127	127
+15	3	1	1		126	127
+15	3	1	2		127	126
+15	3	1	3		126	126
+15	3	1	4		127	125
+15	3	1	5		126	125
+15	3	1	6		127	124
+15	3	1	7		126	124
+15	3	1	8		127	123
+15	3	1	9		126	123
+15	3	1	10		127	122
+15	3	1	11		-1	-1
+15	3	1	12		126	122
+15	3	1	13		127	121
+15	3	1	14		126	121
+15	3	1	15		127	120
+15	3	1	16		126	120
+15	3	1	17		127	119
+15	3	1	18		126	119
+15	3	1	19		127	118
+15	3	1	20		126	118
+15	3	1	21		127	117
+15	3	1	22		-1	-1
+15	3	1	23		126	117
+15	3	1	24		127	116
+15	3	1	25		126	116
+15	3	1	26		127	115
+15	3	1	27		126	115
+15	3	1	28		127	114
+15	3	1	29		126	114
+15	3	1	30		127	113
+15	3	1	31		126	113
+15	3	1	32		127	112
+15	3	1	33		126	112
+15	3	1	34		127	111
+15	3	1	35		126	111
+15	3	1	36		127	110
+15	3	1	37		126	110
+15	3	1	38		127	109
+15	3	1	39		126	109
+15	3	1	40		127	108
+15	3	1	41		126	108
+15	3	1	42		127	107
+15	3	1	43		126	107
+15	3	1	44		127	106
+15	3	1	45		-1	-1
+15	3	1	46		126	106
+15	3	1	47		127	105
+15	3	1	48		126	105
+15	3	1	49		127	104
+15	3	1	50		126	104
+15	3	1	51		127	103
+15	3	1	52		126	103
+15	3	1	53		127	102
+15	3	1	54		126	102
+15	3	1	55		127	101
+15	3	1	56		-1	-1
+15	3	1	57		126	101
+15	3	1	58		127	100
+15	3	1	59		126	100
+15	3	1	60		127	99
+15	3	1	61		126	99
+15	3	1	62		127	98
+15	3	1	63		126	98
+15	3	1	64		127	97
+15	3	1	65		126	97
+15	3	1	66		127	96
+15	3	1	67		126	96
+15	3	2	0		125	95
+15	3	2	1		124	95
+15	3	2	2		125	94
+15	3	2	3		124	94
+15	3	2	4		125	93
+15	3	2	5		124	93
+15	3	2	6		125	92
+15	3	2	7		124	92
+15	3	2	8		125	91
+15	3	2	9		124	91
+15	3	2	10		125	90
+15	3	2	11		-1	-1
+15	3	2	12		124	90
+15	3	2	13		125	89
+15	3	2	14		124	89
+15	3	2	15		125	88
+15	3	2	16		124	88
+15	3	2	17		125	87
+15	3	2	18		124	87
+15	3	2	19		125	86
+15	3	2	20		124	86
+15	3	2	21		125	85
+15	3	2	22		-1	-1
+15	3	2	23		124	85
+15	3	2	24		125	84
+15	3	2	25		124	84
+15	3	2	26		125	83
+15	3	2	27		124	83
+15	3	2	28		125	82
+15	3	2	29		124	82
+15	3	2	30		125	81
+15	3	2	31		124	81
+15	3	2	32		125	80
+15	3	2	33		124	80
+15	3	2	34		125	79
+15	3	2	35		124	79
+15	3	2	36		125	78
+15	3	2	37		124	78
+15	3	2	38		125	77
+15	3	2	39		124	77
+15	3	2	40		125	76
+15	3	2	41		124	76
+15	3	2	42		125	75
+15	3	2	43		124	75
+15	3	2	44		125	74
+15	3	2	45		-1	-1
+15	3	2	46		124	74
+15	3	2	47		125	73
+15	3	2	48		124	73
+15	3	2	49		125	72
+15	3	2	50		124	72
+15	3	2	51		125	71
+15	3	2	52		124	71
+15	3	2	53		125	70
+15	3	2	54		124	70
+15	3	2	55		125	69
+15	3	2	56		-1	-1
+15	3	2	57		124	69
+15	3	2	58		125	68
+15	3	2	59		124	68
+15	3	2	60		125	67
+15	3	2	61		124	67
+15	3	2	62		125	66
+15	3	2	63		124	66
+15	3	2	64		125	65
+15	3	2	65		124	65
+15	3	2	66		125	64
+15	3	2	67		124	64
+15	3	3	0		125	127
+15	3	3	1		124	127
+15	3	3	2		125	126
+15	3	3	3		124	126
+15	3	3	4		125	125
+15	3	3	5		124	125
+15	3	3	6		125	124
+15	3	3	7		124	124
+15	3	3	8		125	123
+15	3	3	9		124	123
+15	3	3	10		125	122
+15	3	3	11		-1	-1
+15	3	3	12		124	122
+15	3	3	13		125	121
+15	3	3	14		124	121
+15	3	3	15		125	120
+15	3	3	16		124	120
+15	3	3	17		125	119
+15	3	3	18		124	119
+15	3	3	19		125	118
+15	3	3	20		124	118
+15	3	3	21		125	117
+15	3	3	22		-1	-1
+15	3	3	23		124	117
+15	3	3	24		125	116
+15	3	3	25		124	116
+15	3	3	26		125	115
+15	3	3	27		124	115
+15	3	3	28		125	114
+15	3	3	29		124	114
+15	3	3	30		125	113
+15	3	3	31		124	113
+15	3	3	32		125	112
+15	3	3	33		124	112
+15	3	3	34		125	111
+15	3	3	35		124	111
+15	3	3	36		125	110
+15	3	3	37		124	110
+15	3	3	38		125	109
+15	3	3	39		124	109
+15	3	3	40		125	108
+15	3	3	41		124	108
+15	3	3	42		125	107
+15	3	3	43		124	107
+15	3	3	44		125	106
+15	3	3	45		-1	-1
+15	3	3	46		124	106
+15	3	3	47		125	105
+15	3	3	48		124	105
+15	3	3	49		125	104
+15	3	3	50		124	104
+15	3	3	51		125	103
+15	3	3	52		124	103
+15	3	3	53		125	102
+15	3	3	54		124	102
+15	3	3	55		125	101
+15	3	3	56		-1	-1
+15	3	3	57		124	101
+15	3	3	58		125	100
+15	3	3	59		124	100
+15	3	3	60		125	99
+15	3	3	61		124	99
+15	3	3	62		125	98
+15	3	3	63		124	98
+15	3	3	64		125	97
+15	3	3	65		124	97
+15	3	3	66		125	96
+15	3	3	67		124	96
diff --git a/Examples/Example4/configs/RansacConfig.dat b/Examples/Example4/configs/RansacConfig.dat
new file mode 100644
index 0000000000000000000000000000000000000000..e8d2c58bf00bf8b80651599724ac2473f471d651
--- /dev/null
+++ b/Examples/Example4/configs/RansacConfig.dat
@@ -0,0 +1,10 @@
+ConfigRansac
+RANSACMaxIteration= 1200
+RANSACDistance= 5 
+RANSACThreshold= 10
+RANSACChargeThreshold= 0.01
+RANSACPointThreshold= 0.1
+MAXBarycenterDistance= 6
+AngleMaxToMerge= 1
+MergeWithBarycenter= 1
+MergeWithScalarProduct= 1
diff --git a/Examples/Example4/cut/cut_p.root b/Examples/Example4/cut/cut_p.root
new file mode 100644
index 0000000000000000000000000000000000000000..4ef7728dcc0b259584eb124afb95bb9613cfd0b9
Binary files /dev/null and b/Examples/Example4/cut/cut_p.root differ
diff --git a/Examples/Example4/hclient.C b/Examples/Example4/hclient.C
new file mode 100644
index 0000000000000000000000000000000000000000..0232426409b6e2de68403e7fc278dabe7a321c79
--- /dev/null
+++ b/Examples/Example4/hclient.C
@@ -0,0 +1,263 @@
+void Sync();
+
+int m_Port = 9092;
+TSocket *m_Sock;
+TCanvas* c1;
+TH3F* hXYZ;
+TH3F* h3D;
+
+TH2F* h2Dxy;
+TH2F* h2Dxz;
+TH2F* hXY;
+TH2F* hXZ;
+
+TList* m_Histo;
+
+vector<double> p0xy;
+vector<double> p1xy;
+vector<double> p0xz;
+vector<double> p1xz;
+
+
+vector<TF1*> vfxy;
+vector<TF1*> vfxz;
+
+
+int i;
+
+//////////////////////////////////////////////////////
+void hclient()
+{
+    // Open connection to server
+    m_Sock = new TSocket("localhost", m_Port);
+    
+    //hXYZ = new TH3F("hXYZ","hXYZ",128,0,128,128,0,128,512,0,512);
+    hXYZ = new TH3F("hXYZ","hXYZ",128,0,128,128,0,128,128,0,128);
+    hXYZ->SetStats(0);
+    hXYZ->SetTitle(0);
+    hXYZ->GetXaxis()->SetTitle("Pad X");
+    hXYZ->GetYaxis()->SetTitle("Pad Y");
+    hXYZ->GetZaxis()->SetTitle("Time (a.u.)");
+    hXYZ->GetXaxis()->CenterTitle();
+    hXYZ->GetYaxis()->CenterTitle();
+    hXYZ->GetZaxis()->CenterTitle();
+    
+    hXYZ->GetXaxis()->SetTitleOffset(1.3);
+    hXYZ->GetYaxis()->SetTitleOffset(1.6);
+    hXYZ->GetZaxis()->SetTitleOffset(1.3);
+    
+    h2Dxy = new TH2F("h2Dxy","h2Dxy",128,0,128,128,0,128);
+    h2Dxy->SetStats(0);
+    h2Dxy->SetTitle(0);
+    h2Dxy->GetXaxis()->SetTitle("Pad X");
+    h2Dxy->GetXaxis()->CenterTitle();
+    h2Dxy->GetYaxis()->SetTitle("Pad Y");
+    h2Dxy->GetYaxis()->CenterTitle();
+    
+    h2Dxz = new TH2F("h2Dxz","h2Dxz",128,0,128,128,0,128);
+    h2Dxz->SetStats(0);
+    h2Dxz->SetTitle(0);
+    h2Dxz->GetXaxis()->SetTitle("Pad X");
+    h2Dxz->GetXaxis()->CenterTitle();
+    h2Dxz->GetYaxis()->SetTitle("Time (a.u.)");
+    h2Dxz->GetYaxis()->CenterTitle();
+    
+    //h3D = new TH3F("h3D","h3D",128,0,128,128,0,128,512,0,512);
+    c1 = new TCanvas("c1","c1",1600,600);
+    c1->Divide(3,1);
+    
+    i=0;
+    if(m_Sock->IsValid()){
+        cout << "/// Successful connection to spectra server ///" << endl;
+        while(1)
+            Sync();
+    }
+    
+    return;
+}
+
+//////////////////////////////////////////////////////
+void Sync()
+{
+    i++;
+    if(!m_Sock || !(m_Sock->IsValid())){
+        if(m_Sock){
+            m_Sock->Close("force");
+            delete m_Sock;
+            m_Sock = NULL;
+        }
+        cout << "/// Sync failed: Connection lost ///" << endl;
+    }
+    
+    TMessage* message=NULL;
+    m_Sock->Send("RequestHisto");
+    cout << "Sending RequestHisto..." << endl;
+    if(m_Sock->Recv(message)<=0){
+        if(m_Sock){
+            m_Sock->Close("force");
+            delete m_Sock;
+            m_Sock = NULL;
+        }
+        cout << "/// Sync failed: message return unreadable ///" << endl;
+    }
+    
+    if(message){
+        m_Histo = (TList*) message->ReadObject(message->GetClass());
+        if(m_Histo){
+            cout << "/// Successful sync of histo list ///" << endl;
+            vector<TGraph2D*> vg2d;
+            vg2d.clear();
+            
+            vector<TH3F*> vh3;
+            vector<TH2F*> vhxy;
+            vector<TH2F*> vhxz;
+            vector<TGraph2D*> vg3;
+            vh3.clear();
+            vhxy.clear();
+            vhxz.clear();
+            
+            
+            //cout << "+++++++++++++++++++++++++++++" << endl;
+            for(int i=0; i<m_Histo->GetSize(); i++){
+                //cout << i << " / " << i%2 << endl;
+                
+                //if((i%2) == 0) vh3.push_back( (TH3F*) m_Histo->At(i));
+                if((i%2) == 0) vg3.push_back( (TGraph2D *) m_Histo->At(i));
+                
+                else vg2d.push_back( (TGraph2D *) m_Histo->At(i) );
+                
+            }
+            
+            for(int i=0; i<vg3.size(); i++){
+                //h3D = new TH3F("h3D","h3D",128,0,128,128,0,128,512,0,512);
+                h3D = new TH3F("h3D","h3D",128,0,128,128,0,128,128,0,128);
+                hXY = new TH2F("hXY","hXY",128,0,128,128,0,128);
+                hXZ = new TH2F("hXZ","hXZ",128,0,128,128,0,128);
+                
+                double *X = vg3[i]->GetX();
+                double *Y = vg3[i]->GetY();
+                double *Z = vg3[i]->GetZ();
+                for(int p=0; p<vg3[i]->GetN(); p++){
+                    //cout << i << " / " << p << " / " << X[p] << " / " << Y[p] << " / " << Z[p] <<endl;
+                    h3D->Fill(X[p],Y[p],Z[p]);
+                    hXY->Fill(X[p],Y[p]);
+                    hXZ->Fill(X[p],Z[p]);
+                }
+                vh3.push_back(h3D);
+                vhxy.push_back(hXY);
+                vhxz.push_back(hXZ);
+            }
+            
+            
+            c1->cd(1);
+            hXYZ->Draw();
+            for(int i=0; i<vh3.size(); i++){
+                vh3[i]->SetMarkerStyle(8);
+                vh3[i]->SetMarkerSize(0.7);
+                vh3[i]->SetMarkerColor(kAzure+i);
+                vh3[i]->Draw("same");
+            }
+            
+            
+            p0xy.clear();
+            p1xy.clear();
+            p0xz.clear();
+            p1xz.clear();
+            vfxy.clear();
+            vfxz.clear();
+            for(int i=0; i<vg2d.size(); i++){
+                vg2d[i]->SetLineWidth(4);
+                vg2d[i]->SetLineColor(kAzure+i);
+                vg2d[i]->Draw("tri1 same");
+                
+                double axy = (vg2d[i]->GetY()[1] - vg2d[i]->GetY()[0]) / (vg2d[i]->GetX()[1] - vg2d[i]->GetX()[0]);
+                p1xy.push_back(axy);
+                p0xy.push_back( vg2d[i]->GetY()[0] - axy*vg2d[i]->GetX()[0] );
+                
+                double axz = (vg2d[i]->GetZ()[1] - vg2d[i]->GetZ()[0]) / (vg2d[i]->GetX()[1] - vg2d[i]->GetX()[0]);
+                p1xz.push_back(axz);
+                p0xz.push_back( vg2d[i]->GetZ()[0] - axz*vg2d[i]->GetX()[0] );
+            }
+            
+            for(unsigned int i=0; i<p0xy.size(); i++){
+                TF1* f1xy = new TF1(Form("fxy%d",i+1),"[0]+[1]*x[0]",0,128);
+                f1xy->SetParameter(0,p0xy[i]);
+                f1xy->SetParameter(1,p1xy[i]);
+                f1xy->SetLineColor(2);
+                f1xy->SetLineWidth(3);
+                
+                vfxy.push_back(f1xy);
+                
+                TF1* f1xz = new TF1(Form("fxz%d",i+1),"[0]+[1]*x[0]",0,128);
+                f1xz->SetParameter(0,p0xz[i]);
+                f1xz->SetParameter(1,p1xz[i]);
+                f1xz->SetLineColor(2);
+                f1xz->SetLineWidth(3);
+                
+                vfxz.push_back(f1xz);
+            }
+            
+            c1->cd(2);
+            h2Dxy->Draw();
+            for(int i=0; i<vhxy.size(); i++){
+                vhxy[i]->Draw("colsame");
+            }
+            
+            for(int i=0; i<vfxy.size(); i++){
+                vfxy[i]->Draw("lsame");
+            }
+            
+            
+            
+            c1->cd(3);
+            h2Dxz->Draw();
+            for(int i=0; i<vhxz.size(); i++){
+                vhxz[i]->Draw("colsame");
+            }
+            
+            for(int i=0; i<vfxz.size(); i++){
+                vfxz[i]->Draw("lsame");
+            }
+            
+            TString SaveCanvas = Form("png/canvas_%d.png",i);
+            //gPad->SetPhi(110);
+            gPad->Update();
+            //TString MakeGif = Form("gif/canvas_%d.gif+0.1",i);
+            //c1->SaveAs(SaveCanvas);
+            c1->Print("gif/canvas.gif+70");
+            //c1->Update();
+            
+        }
+        else cout << "/// Sync return a NULL spectra list ///" << endl;
+        
+        /*m_Histo->First()->Draw();
+         m_Histo->Last()->Draw("tri1 same");
+         gPad->Update();*/
+    }
+    
+    
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Examples/Example4/macro/CheckReco.C b/Examples/Example4/macro/CheckReco.C
new file mode 100644
index 0000000000000000000000000000000000000000..59a59b28bf5e6df82e9764854baca1285089b81a
--- /dev/null
+++ b/Examples/Example4/macro/CheckReco.C
@@ -0,0 +1,54 @@
+TChain* chain=NULL;
+
+TH1F* hvertex;
+TH1F* henergy;
+TH1F* hangle;
+
+TCutG* cut_p=NULL;
+
+///////////////////////////////////////////////
+void LoadCut()
+{
+  TFile* File_cutp = new TFile("cut/cut_p.root","READ");
+  cut_p = (TCutG*) File_cutp->FindObjectAny("cut_p");
+}
+
+///////////////////////////////////////////////
+void LoadChain()
+{
+  chain = new TChain("PhysicsTree");
+  chain->Add("../../Outputs/Analysis/Example4.root");
+}
+
+////////////////////////////////////////////////
+void CheckReco()
+{
+  LoadCut();
+  LoadChain();
+
+  TCanvas* c1 = new TCanvas("c1","c1",1200,1200);
+  c1->Divide(2,2);
+  // Vertex //
+  c1->cd(1);
+  chain->Draw("InitXVertex+127-XVertex>>hvertex(200,-100,100)","cut_p");
+  hvertex = (TH1F*) gDirectory->FindObjectAny("hvertex");
+  hvertex->GetXaxis()->SetTitle("X_{init}-X_{reco} (mm)");
+  hvertex->GetXaxis()->CenterTitle();
+
+  // Angle //
+  c1->cd(2);
+  chain->Draw("InitTheta3-ThetaLab>>hangle(200,-10,10)","cut_p");
+  hangle = (TH1F*) gDirectory->FindObjectAny("hangle");
+  hangle->GetXaxis()->SetTitle("#theta_{init}-#theta_{reco} (deg)");
+  hangle->GetXaxis()->CenterTitle();
+
+  // Energy //
+  c1->cd(3);
+  chain->Draw("InitE3-ELab>>henergy(200,-2,2)","cut_p");
+  henergy = (TH1F*) gDirectory->FindObjectAny("henergy");
+  henergy->GetXaxis()->SetTitle("E_{init}-E_{reco} (MeV)");
+  henergy->GetXaxis()->CenterTitle();
+
+
+
+}
diff --git a/Examples/Example4/macro/ShowResult.C b/Examples/Example4/macro/ShowResult.C
new file mode 100644
index 0000000000000000000000000000000000000000..79904dca34220881593a386cae17111e504015b4
--- /dev/null
+++ b/Examples/Example4/macro/ShowResult.C
@@ -0,0 +1,74 @@
+TChain* chain=NULL;
+
+TH2F* hpid;
+TH2F* hkine;
+TH2F* hev;
+TH1F* he;
+
+TCutG* cut_p=NULL;
+
+///////////////////////////////////////////////
+void LoadCut()
+{
+  TFile* File_cutp = new TFile("cut/cut_p.root","READ");
+  cut_p = (TCutG*) File_cutp->FindObjectAny("cut_p");
+}
+
+///////////////////////////////////////////////
+void LoadChain()
+{
+  chain = new TChain("PhysicsTree");
+  chain->Add("../../Outputs/Analysis/Example4.root");
+}
+
+////////////////////////////////////////////////
+void ShowResult()
+{
+  LoadCut();
+  LoadChain();
+
+  TCanvas* c1 = new TCanvas("c1","c1",1200,1200);
+  c1->Divide(2,2);
+  // PID //
+  c1->cd(1);
+  chain->Draw("DE/60.:ESi>>hpid(500,0,15,500,0.2,20)","","colz");
+  hpid = (TH2F*) gDirectory->FindObjectAny("hpid");
+  hpid->GetXaxis()->SetTitle("E_{Si} (MeV)");
+  hpid->GetXaxis()->CenterTitle();
+  hpid->GetYaxis()->SetTitle("#DeltaE (a.u.)");
+  hpid->GetYaxis()->CenterTitle();
+
+  cut_p->SetLineWidth(2);
+  cut_p->SetLineColor(2);
+  cut_p->Draw("same");
+  // Kinematics //
+  c1->cd(2);
+  chain->Draw("ELab:ThetaLab>>hkine(100,0,50,200,0,15)","cut_p","colz");
+  hkine = (TH2F*) gDirectory->FindObjectAny("hkine");
+  hkine->GetXaxis()->SetTitle("#theta_{lab} (deg)");
+  hkine->GetXaxis()->CenterTitle();
+  hkine->GetYaxis()->SetTitle("E_{lab} (MeV)");
+  hkine->GetYaxis()->CenterTitle();
+
+  NPL::Reaction* r1 = new NPL::Reaction("18O(p,p)18O@50");
+  TGraph* g1;
+  g1=r1->GetKinematicLine3();
+  g1->SetLineWidth(2);
+  g1->SetLineColor(2);
+  g1->Draw("lsame");
+
+  // Vertex-Ex //
+  c1->cd(3);
+  chain->Draw("Ex:XVertex>>hev(150,0,300,200,-5,5)","cut_p","colz");
+  hev = (TH2F*) gDirectory->FindObjectAny("hev");
+  hev->GetXaxis()->SetTitle("X_{vertex} (mm)");
+  hev->GetXaxis()->CenterTitle();
+  hev->GetYaxis()->SetTitle("E*_{18O} (MeV)");
+  hev->GetYaxis()->CenterTitle();
+  // Ex //
+  c1->cd(4);
+  chain->Draw("Ex>>he(200,-5,5)","cut_p");
+  he = (TH1F*) gDirectory->FindObjectAny("he");
+  he->GetXaxis()->SetTitle("E*_{18O} (MeV)");
+  he->GetXaxis()->CenterTitle();
+}
diff --git a/Examples/Example4/macro/ShowSiImpact.C b/Examples/Example4/macro/ShowSiImpact.C
new file mode 100644
index 0000000000000000000000000000000000000000..14473abba0a6d2326088d80c5fa6132451c0df45
--- /dev/null
+++ b/Examples/Example4/macro/ShowSiImpact.C
@@ -0,0 +1,44 @@
+TChain* chain=NULL;
+
+TH2F* h[20];
+
+TCutG* cut_p=NULL;
+
+///////////////////////////////////////////////
+void LoadCut()
+{
+  TFile* File_cutp = new TFile("cut/cut_p.root","READ");
+  cut_p = (TCutG*) File_cutp->FindObjectAny("cut_p");
+}
+
+///////////////////////////////////////////////
+void LoadChain()
+{
+  chain = new TChain("PhysicsTree");
+  chain->Add("../../Outputs/Analysis/Example4.root");
+}
+
+////////////////////////////////////////////////
+void ShowSiImpact()
+{
+  LoadCut();
+  LoadChain();
+
+  for(int i=0; i<20; i++){
+    TString token1 = Form("SiPosZ:SiPosY>>h%d(200,-200,200,200,0,300)",i);
+    TString token2 = Form("SiNumber==%d && cut_p",i);
+    chain->Draw(token1,token2);
+    h[i] = (TH2F*)gDirectory->FindObjectAny(Form("h%d",i));
+    h[i]->SetMarkerStyle(7);
+
+    h[i]->SetMarkerColor(kAzure+i);
+    if(i>9)h[i]->SetMarkerColor(kAzure+i-10);
+  }
+
+  TCanvas* c1 = new TCanvas("c1","c1",600,600);
+  c1->cd();
+  h[0]->Draw();
+  for(int i=1; i<20; i++){
+    h[i]->Draw("same");
+  }
+}
diff --git a/Inputs/DetectorConfiguration/Example2.detector b/Inputs/DetectorConfiguration/Example2.detector
index a2d9678fcda0b98993eac987b4b4121223a86d83..9ba36158b7fa46fde53053c9b299cccfe5ba0277 100644
--- a/Inputs/DetectorConfiguration/Example2.detector
+++ b/Inputs/DetectorConfiguration/Example2.detector
@@ -1,8 +1,3 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-GeneralTarget
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%0.2mg/cm2
 Target
  THICKNESS= 4.5 micrometer
  RADIUS= 5 mm
diff --git a/Inputs/DetectorConfiguration/Example4.detector b/Inputs/DetectorConfiguration/Example4.detector
new file mode 100644
index 0000000000000000000000000000000000000000..839b603496abf2ce572f00fdbf107d081d51c74b
--- /dev/null
+++ b/Inputs/DetectorConfiguration/Example4.detector
@@ -0,0 +1,12 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Actar
+ POS= 0 0 0 mm
+ Shape= Square
+ Si= 1
+ VamosSi= 0
+ CsI= 0
+ BeamDump= 0
+ GasMaterial= iC4H10
+ GasFraction= 100
+ Temperature= 295 kelvin
+ Pressure= 0.1 bar
diff --git a/Inputs/EventGenerator/18Opp.reaction b/Inputs/EventGenerator/18Opp.reaction
index a41d00e05393926914e3ecdb9713e2923856ec65..fa36088f02ca47936dec66e3a4e4e6057668e658 100644
--- a/Inputs/EventGenerator/18Opp.reaction
+++ b/Inputs/EventGenerator/18Opp.reaction
@@ -22,7 +22,9 @@ TwoBodyReaction
  Heavy= 18O
  ExcitationEnergyLight= 0.0
  ExcitationEnergyHeavy= 0.0
- CrossSectionPath= flat_18O.txt CS
+ CrossSectionPath= flat.txt CS
+ HalfOpenAngleMin= 140
+ HalfOpenAngleMax= 180 
  ShootLight= 1
  ShootHeavy= 1
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Inputs/EventGenerator/Example1.reaction b/Inputs/EventGenerator/Example1.reaction
index 3647c8a4b6e08612747745506276d229e0768de5..2461a6e242fd81cbbffbee76be42f21a82f03038 100644
--- a/Inputs/EventGenerator/Example1.reaction
+++ b/Inputs/EventGenerator/Example1.reaction
@@ -18,6 +18,10 @@ Beam
  %YPhiYProfilePath=
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DefineNucleus 10He
+ SubPart= 8He n n
+ BindingEnergy= 0 MeV
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 TwoBodyReaction
  Beam= 11Li
  Target= 2H
diff --git a/Inputs/EventGenerator/Example4.reaction b/Inputs/EventGenerator/Example4.reaction
new file mode 100644
index 0000000000000000000000000000000000000000..4da764b74a3111e7f524ada0e19eccab74aba645
--- /dev/null
+++ b/Inputs/EventGenerator/Example4.reaction
@@ -0,0 +1,30 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% Reaction file for 11Li(d,3He)10He reaction %%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%Beam energy given in MeV ; Excitation in MeV
+Beam
+  Particle= 18O
+  Energy= 59.4 MeV 
+  SigmaEnergy= 0 MeV 
+  SigmaThetaX= 0 deg
+  SigmaPhiY= 0 deg
+  SigmaX= 0 mm 
+  SigmaY= 0 mm
+  MeanThetaX= 0 deg 
+  MeanPhiY= 0 deg
+  MeanX= 0 mm 
+  MeanY= 0 mm 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+TwoBodyReaction
+ Beam= 18O
+ Target= 1H
+ Light= 1H
+ Heavy= 18O
+ ExcitationEnergyLight= 0.0 MeV
+ ExcitationEnergyHeavy= 0.0 MeV
+ CrossSectionPath= flat.txt CS
+ HalfOpenAngleMin= 100 deg 
+ HalfOpenAngleMax= 180 deg 
+ ShootLight= 1
+ ShootHeavy= 1
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/NPLib/Core/CMakeLists.txt b/NPLib/Core/CMakeLists.txt
index 4ae28e24d28e2716dca772843161ecb04c86cade..9bf6b2c319ca55a04be36e9627dd3d7038d946b5 100644
--- a/NPLib/Core/CMakeLists.txt
+++ b/NPLib/Core/CMakeLists.txt
@@ -2,6 +2,6 @@ add_custom_command(OUTPUT TAsciiFileDict.cxx COMMAND  ../scripts/build_dict.sh T
 add_custom_command(OUTPUT NPDeltaSpectraDict.cxx COMMAND  ../scripts/build_dict.sh NPDeltaSpectra.h NPDeltaSpectraDict.cxx NPDeltaSpectra.rootmap libNPCore.so NPDeltaSpectraLinkdef.h)  
 
 add_custom_command(OUTPUT NPVDetectorDict.cxx COMMAND  ../scripts/build_dict.sh NPVDetector.h NPVDetectorDict.cxx NPVDetector.rootmap libNPCore.so NPCoreLinkdef.h)  
-add_library(NPCore SHARED NPCore.cxx NPVAnalysis.cxx NPAnalysisFactory.cxx NPCalibrationManager.cxx NPOptionManager.cxx RootOutput.cxx RootInput.cxx TAsciiFile.cxx TAsciiFileDict.cxx NPDeltaSpectraDict.cxx NPDetectorManager.cxx NPVDetector.cxx NPVDetectorDict.cxx NPVSpectra.cxx NPDetectorFactory.cxx NPSpectraServer.cxx NPInputParser.cxx NPImage.cxx NPElog.cxx NPDeltaSpectra.cxx)
+add_library(NPCore SHARED NPCore.cxx NPRandom.cxx NPVAnalysis.cxx NPAnalysisFactory.cxx NPCalibrationManager.cxx NPOptionManager.cxx RootOutput.cxx RootInput.cxx TAsciiFile.cxx TAsciiFileDict.cxx NPDeltaSpectraDict.cxx NPDetectorManager.cxx NPVDetector.cxx NPVDetectorDict.cxx NPVSpectra.cxx NPDetectorFactory.cxx NPSpectraServer.cxx NPInputParser.cxx NPImage.cxx NPElog.cxx NPDeltaSpectra.cxx)
 target_link_libraries(NPCore ${ROOT_LIBRARIES}) 
-install(FILES NPCore.h NPVAnalysis.h NPAnalysisFactory.h  NPCalibrationManager.h NPOptionManager.h RootInput.h RootOutput.h TAsciiFile.h NPDetectorManager.h NPVDetector.h NPGlobalSystemOfUnits.h NPPhysicalConstants.h NPSystemOfUnits.h NPVSpectra.h NPDetectorFactory.h  NPSpectraServer.h NPInputParser.h NPImage.h NPElog.h NPDeltaSpectra.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
+install(FILES NPCore.h NPVAnalysis.h NPAnalysisFactory.h NPRandom.h NPCalibrationManager.h NPOptionManager.h RootInput.h RootOutput.h TAsciiFile.h NPDetectorManager.h NPVDetector.h NPGlobalSystemOfUnits.h NPPhysicalConstants.h NPSystemOfUnits.h NPVSpectra.h NPDetectorFactory.h  NPSpectraServer.h NPInputParser.h NPImage.h NPElog.h NPDeltaSpectra.h DESTINATION ${CMAKE_INCLUDE_OUTPUT_DIRECTORY})
diff --git a/NPLib/Core/NPRandom.cxx b/NPLib/Core/NPRandom.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..ae10fdad9733a1a26b272ac083e4b72aaeeadf9b
--- /dev/null
+++ b/NPLib/Core/NPRandom.cxx
@@ -0,0 +1,32 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta   contact address: matta@lpccaen.in2p3.fr   *
+ *                                                                           *
+ * Creation Date  : 4 september 2017                                         *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  A singleton Random generator to be used overrall nptool                  *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include"NPRandom.h"
+
+NPL::Random* NPL::Random::m_Instance = 0;
+NPL::Random* NPL::Random::getInstance(unsigned int seed){
+  if(!m_Instance) 
+    m_Instance = new NPL::Random(seed);
+
+  return m_Instance;
+  
+  
+  }
diff --git a/NPLib/Core/NPRandom.h b/NPLib/Core/NPRandom.h
new file mode 100644
index 0000000000000000000000000000000000000000..a06234bcc77458391cd163e36c427dae419c6da7
--- /dev/null
+++ b/NPLib/Core/NPRandom.h
@@ -0,0 +1,68 @@
+#ifndef NPRANDOM
+#define NPRANDOM
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien Matta   contact address: matta@lpccaen.in2p3.fr   *
+ *                                                                           *
+ * Creation Date  : 4 september 2017                                         *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  A singleton Random generator to be used overrall nptool                  *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+//STL
+#include<iostream>
+
+// Root
+#include"TRandom1.h"
+
+
+namespace NPL{
+  class Random{
+    private:
+      Random(unsigned int seed=1){m_Random.SetSeed(seed);};
+      ~Random(){std::cout << "NPL::Random current seed was :" <<  m_Random.GetSeed() << std::endl;};
+
+    public:
+      static Random* getInstance(unsigned int seed=1);
+      void SetSeed(unsigned int seed){m_Random.SetSeed(seed);};
+      inline double Uniform() {return m_Random.Uniform() ;};
+      inline double Uniform(const double& x1, const double& x2){return m_Random.Uniform(x1,x2) ;};
+
+      inline double Gaus(const double& mean,const double& sigma){return m_Random.Gaus(mean,sigma) ;};
+      inline int    Poisson(const int&  mean){return m_Random.Poisson(mean) ;};
+      inline double Poisson(const double& mean){return m_Random.Poisson(mean) ;};
+      inline double BreitWigner(const double& mean, const double& gamma){return m_Random.BreitWigner(mean,gamma) ;};
+      inline int    Integer(const unsigned int& max){return m_Random.Integer(max) ;};
+
+    private:
+      static Random* m_Instance;
+      TRandom1 m_Random; 
+  };
+
+  namespace Rand{
+    Random* MainRand= NPL::Random::getInstance();
+    double Uniform() {return MainRand->Uniform() ;};
+    double Uniform(const double& x1, const double& x2){return MainRand->Uniform(x1,x2) ;};
+
+    double Gaus(const double& mean,const double& sigma){return MainRand->Gaus(mean,sigma) ;};
+    int    Poisson(const int&  mean){return MainRand->Poisson(mean) ;};
+    double Poisson(const double& mean){return MainRand->Poisson(mean) ;};
+    double BreitWigner(const double& mean, const double& gamma){return MainRand->BreitWigner(mean,gamma) ;};
+    int    Integer(const unsigned int& max){return MainRand->Integer(max) ;};
+
+  }
+}
+#endif
diff --git a/NPLib/Core/RootOutput.cxx b/NPLib/Core/RootOutput.cxx
index 27d60c5d924318cf3f248a75b57c12bf42e886fb..e267880a2dbbaaa2e0155bb5129df7d23858116c 100644
--- a/NPLib/Core/RootOutput.cxx
+++ b/NPLib/Core/RootOutput.cxx
@@ -119,6 +119,7 @@ RootOutput::RootOutput(std::string fileNameBase, std::string treeNameBase){
   }
 
   pRootTree = new TTree(treeNameBase.c_str(), "Data created / analysed with the NPTool package");
+  pRootFile->SetCompressionLevel(1);
   pRootList = new TList();
 
   // Init TAsciiFile objects
diff --git a/NPLib/Detectors/Actar/MEventReduced.h b/NPLib/Detectors/Actar/MEventReduced.h
index 0d642c10a882578fe81229f2720e3d336f73bca2..8c2502e09560213ca9e5addfbbc3dac56b8e2968 100644
--- a/NPLib/Detectors/Actar/MEventReduced.h
+++ b/NPLib/Detectors/Actar/MEventReduced.h
@@ -20,7 +20,7 @@ class ReducedData: public TObject
 	
 	std::vector<float> peakheight;
 	std::vector<float> peaktime;
-
+  void clear(){peakheight.clear();peaktime.clear();}//!
 	ClassDef(ReducedData,1);	
 };
 
diff --git a/NPLib/Detectors/Sharc/TSharcData.cxx b/NPLib/Detectors/Sharc/TSharcData.cxx
index 42623ada4b84b0c92690889143d306bda556802c..e2fa7f3ac3ed8168e6b410dd795ea996c19ddcc4 100644
--- a/NPLib/Detectors/Sharc/TSharcData.cxx
+++ b/NPLib/Detectors/Sharc/TSharcData.cxx
@@ -44,17 +44,20 @@ void TSharcData::Clear(){
   fSharc_StripFront_Energy.clear();
   fSharc_StripFront_TimeCFD.clear();
   fSharc_StripFront_TimeLED.clear();
+  fSharc_StripFront_Time.clear();
 
   fSharc_StripBack_DetectorNbr.clear();
   fSharc_StripBack_StripNbr.clear();
   fSharc_StripBack_Energy.clear();
   fSharc_StripBack_TimeCFD.clear();
   fSharc_StripBack_TimeLED.clear();
+  fSharc_StripBack_Time.clear();
   
   fSharc_PAD_DetectorNbr.clear();
   fSharc_PAD_Energy.clear();
   fSharc_PAD_TimeCFD.clear();
   fSharc_PAD_TimeLED.clear();
+  fSharc_PAD_Time.clear();
 
 }
 
diff --git a/NPLib/Detectors/TNT/TTNTPhysics.cxx b/NPLib/Detectors/TNT/TTNTPhysics.cxx
index e3b6649569c02b3089281e9beb505e3332ff033b..9ca89cf6fa9edc7c8a8115925229a380ad9e1931 100644
--- a/NPLib/Detectors/TNT/TTNTPhysics.cxx
+++ b/NPLib/Detectors/TNT/TTNTPhysics.cxx
@@ -16,7 +16,7 @@
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *                                                                           *   
+ *                                                                           *
  *                                                                           *
  *****************************************************************************/
 
@@ -60,12 +60,12 @@ TTNTPhysics::TTNTPhysics()
 void TTNTPhysics::AddDetector(TVector3 , string){
   //cout << "check1" << endl;
   // In That simple case nothing is done
-  // Typically for more complex detector one would calculate the relevant 
+  // Typically for more complex detector one would calculate the relevant
   // positions (stripped silicon) or angles (gamma array)
   m_NumberOfDetectors++;
   //cout << "m_NumberofDetectors is: " << m_NumberOfDetectors << endl;
   //cout <<"test1" << endl;
-} 
+}
 
 ///////////////////////////////////////////////////////////////////////////
 void TTNTPhysics::AddDetector(double R, double Theta, double Phi, string shape){
@@ -74,8 +74,8 @@ void TTNTPhysics::AddDetector(double R, double Theta, double Phi, string shape){
   TVector3 Pos(R*sin(Theta)*cos(Phi),R*sin(Theta)*sin(Phi),R*cos(Theta));
   // Call the cartesian method
   AddDetector(Pos,shape);
-} 
-  
+}
+
 ///////////////////////////////////////////////////////////////////////////
 void TTNTPhysics::BuildSimplePhysicalEvent() {
   BuildPhysicalEvent();
@@ -110,15 +110,15 @@ void TTNTPhysics::BuildPhysicalEvent() {
 	    << " in position map!\n";
 	    exit(1);
 	  }
-	assert(info->second.size() == 3); // error check that the position vector is correct size
+	//assert(info->second.size() == 3); // error check that the position vector is correct size
 	double xpos = info->second[0];
         double ypos = info->second[1];
         double zpos = info->second[2];
-                               
+
         Xpos.push_back(info->second[0]);
 	Ypos.push_back(info->second[1]);
 	Zpos.push_back(info->second[2]);
-        
+
         Theta.push_back(atan(info->second[0]/info->second[2])*180/PI);
         Phi.push_back(atan(info->second[1]/info->second[2])*180/PI);
         Theta_Lab.push_back(atan((pow(pow(info->second[0],2)+pow(info->second[1],2),0.5))/info->second[2])*180/PI);
@@ -149,7 +149,7 @@ void TTNTPhysics::PreTreat() {
     }
   }
 
-  // Time 
+  // Time
   mysize = m_EventData->GetMultTime();
   for (ULong_t i = 0; i < mysize; ++i) {
     Double_t Time= m_EventData->Get_Time(i); //Cal->ApplyCalibration("TNT/TIME"+NPL::itoa(m_EventData->GetT_DetectorNbr(i)),m_EventData->Get_Time(i));
@@ -194,7 +194,7 @@ void TTNTPhysics::ReadAnalysisConfig() {
     cout << "check5" << endl;
     string name = "ConfigTNT";
     cout << "Test5" << endl;
-    if (LineBuffer.compare(0, name.length(), name) == 0) 
+    if (LineBuffer.compare(0, name.length(), name) == 0)
       ReadingStatus = true;
 
     // loop on tokens and data
@@ -247,7 +247,7 @@ void TTNTPhysics::Clear() {
 void TTNTPhysics::ReadConfiguration(NPL::InputParser parser) {
   vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("TNT");
   if(NPOptionManager::getInstance()->GetVerboseLevel())
-    cout << "//// " << blocks.size() << " detectors found " << endl; 
+    cout << "//// " << blocks.size() << " detectors found " << endl;
   cout << "check6" << endl;
   vector<string> cart = {"POS","VOXNUM","VOXSIZE","Shape"};
   vector<string> sphe = {"R","Theta","Phi","Shape"};
@@ -256,7 +256,7 @@ void TTNTPhysics::ReadConfiguration(NPL::InputParser parser) {
     if(blocks[i]->HasTokenList(cart)){
       if(NPOptionManager::getInstance()->GetVerboseLevel())
         cout << endl << "////  TNT " << i+1 <<  endl;
-    
+
       TVector3 Pos = blocks[i]->GetTVector3("POS","mm");
       vector<int> vnumber = blocks[i]->GetVectorInt("VOXNUM");
       if((vnumber.size() != 3) || (vnumber[0]+vnumber[1]+vnumber[2] < 3)) {
@@ -275,7 +275,7 @@ void TTNTPhysics::ReadConfiguration(NPL::InputParser parser) {
       double Widthx = VoxWidth[0]; // x-width of individual cell
       double Widthy = VoxWidth[1]; // y-width
       double Widthz = VoxWidth[2]; // z-width
-      
+
       int VoxNumx = VoxNum[0];     // number of voxels placed in x-dim
       int VoxNumy = VoxNum[1];     // y-dim
       int VoxNumz = VoxNum[2];     // z-dim
@@ -289,7 +289,7 @@ void TTNTPhysics::ReadConfiguration(NPL::InputParser parser) {
       int dummyy = Pos[1];
       int dummyz = Pos[2];
       int detnumber = 0;
-      
+
       // Add WLS spacing
       if(WLSToggle == false) {
         wlsSize = 0;
@@ -378,7 +378,7 @@ void TTNTPhysics::ClearSpectra() {
 map< string , TH1*> TTNTPhysics::GetSpectra() {
   if(m_Spectra)
     return m_Spectra->GetMapHisto();
-  else{ 
+  else{
     cout << "check9" << endl;
     map< string , TH1*> empty;
     cout << "test9" << endl;
@@ -453,4 +453,3 @@ class proxy_TNT{
 
 proxy_TNT p_TNT;
 }
-
diff --git a/NPLib/Physics/NPNucleus.cxx b/NPLib/Physics/NPNucleus.cxx
index 52b092588e45a21050eb0aeef1babd430a495360..18d04b3c463e09a6e24aabb664e668c82bed1631 100644
--- a/NPLib/Physics/NPNucleus.cxx
+++ b/NPLib/Physics/NPNucleus.cxx
@@ -23,6 +23,7 @@
 
 // NPTOOL headers
 #include "NPNucleus.h"
+#include "NPCore.h"
 using namespace NPL;
 
 
@@ -57,6 +58,31 @@ Nucleus::Nucleus(string isotope){
   SetUp(isotope);
 }
 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
+Nucleus::Nucleus(string name, vector<string> subpart, double binding,double Ex, string SpinParity, double Spin, string Parity, double LifeTime){
+  fName= name;
+  fCharge= 0;
+  fAtomicWeight= 0;
+  unsigned int size = subpart.size();
+  double Mass = 0;
+  for(unsigned int i = 0 ; i < size ; i++){
+    Nucleus N = Nucleus(subpart[i]);
+    Mass+= N.Mass();
+    fAtomicWeight+= N.GetA();
+    fCharge+= N.GetZ(); 
+  }
+
+  Mass-=binding;
+  SetMassExcess( 1000*(Mass-fAtomicWeight*amu_c2 + fCharge*electron_mass_c2));
+
+  fExcitationEnergy=Ex;
+  fSpinParity= SpinParity;
+  fSpin= Spin;
+  fParity= Parity;
+  fLifeTime = LifeTime;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
 void Nucleus::SetUp(string isotope){
   //----------- Constructor Using nubtab12.asc by name----------
   // open the file to read and check if it is open
@@ -377,6 +403,97 @@ double Nucleus::GetThetaCM(double EnergyLab, double ThetaLab, double PhiLab, dou
     return ThetaCM;
 }
 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void Nucleus::DefineMassByThreshold(const vector<string>& v){
+  // Define the mass as the sum of the mass of the particle named in v
+  unsigned int size = v.size();
+  vector<NPL::Nucleus> N;
+  for(unsigned int i = 0 ; i < size ; i++)
+    N.push_back(NPL::Nucleus(v[i]));
+
+  DefineMassByThreshold(N);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void Nucleus::DefineMassByThreshold(const vector<NPL::Nucleus>& N){
+  // Define the mass as the sum of the mass of the particle defined in N
+  unsigned int size = N.size();
+  double Mass = 0;
+  unsigned int A = 0;
+  unsigned int Z = 0;
+  for(unsigned int i = 0 ; i < size ; i++){
+    Mass+= N[i].Mass();
+    A+= N[i].GetA();
+    Z+= N[i].GetZ(); 
+  }
+  // Check the threshold make any sense (same A, same Z):
+  if(A!=GetA()|| Z!=GetZ()){
+    NPL::SendWarning("NPL::Nucleus","Mass and charge is not conserved in DefineMassByThreshold! Doing no change to nucleus");
+    return;
+  } 
+
+  SetExcitationEnergy(0);
+  SetMassExcess( 1000*(Mass-fAtomicWeight*amu_c2 + fCharge*electron_mass_c2));
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetSXn(unsigned int X) const {
+ Nucleus N(GetZ(),GetA()-X);
+  return N.Mass()+X*neutron_mass_c2-Mass();
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetSXp(unsigned int X) const {
+ Nucleus N(GetZ()-X,GetA()-X);
+  return N.Mass()+X*proton_mass_c2-Mass();
+  }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetSn() const {
+  return GetSXn(1);
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetSp() const {
+  return GetSXp(1);
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetS2n() const {
+  return GetSXn(2);
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetS2p() const {
+  return GetSXp(2);
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetSt() const {
+ Nucleus N(GetZ()-1,GetA()-3);
+ Nucleus A(1,3);
+  return N.Mass()+A.Mass()-Mass();
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetS3He() const {
+ Nucleus N(GetZ()-2,GetA()-3);
+ Nucleus A(2,3);
+  return N.Mass()+A.Mass()-Mass();
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+double Nucleus::GetSa() const {
+ Nucleus N(GetZ()-2,GetA()-4);
+ Nucleus A(2,4);
+  return N.Mass()+A.Mass()-Mass();
+  }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void Nucleus::PrintThreshold() const {
+   cout << GetName() << " thresholds : " << endl;
+   cout << "  Sn   : "  << GetSn()    << " MeV" << endl;
+   cout << "  Sp   : "  << GetSp()    << " MeV" << endl;
+   cout << "  S2n  : "  << GetS2n()   << " MeV" << endl;
+   cout << "  S2p  : "  << GetS2p()   << " MeV" << endl;
+   cout << "  St   : "  << GetSt()    << " MeV" << endl;
+   cout << "  S3He : "  << GetS3He()  << " MeV" << endl;
+   cout << "  Sa   : "  << GetSa()    << " MeV" << endl;
+  }
+
 
 
 
diff --git a/NPLib/Physics/NPNucleus.h b/NPLib/Physics/NPNucleus.h
index 58373c56b48923109d4f57a26e8acbe14c2f0bc6..cbb431fe49e7756c284cfb283e1484a6b32b9b6e 100644
--- a/NPLib/Physics/NPNucleus.h
+++ b/NPLib/Physics/NPNucleus.h
@@ -49,6 +49,7 @@ namespace NPL {
     Nucleus();
     Nucleus(string isotope);
     Nucleus(int Z, int A);
+    Nucleus(string name, vector<string> subpart, double binding,double Ex=0, string SpinParity="", double Spin=0, string Parity="", double LifeTime=-1);
     ~Nucleus();
   
   public:
@@ -137,6 +138,23 @@ namespace NPL {
     double      Mass() const {return (fAtomicWeight*amu_c2 + fMassExcess/1000. - fCharge*electron_mass_c2+fExcitationEnergy);}
       double GetBindingEnergy() const {return (fCharge*proton_mass_c2 + (fAtomicWeight-fCharge)*neutron_mass_c2 + fCharge*electron_mass_c2 - fAtomicWeight*amu_c2 - fMassExcess/1000);}
     void        Print() const   ;
+
+  public:
+    void DefineMassByThreshold(const vector<string>& v); // Define the mass as the sum of the mass of the particle named in v
+    void DefineMassByThreshold(const vector<NPL::Nucleus>& N); // Define the mass as the sum of the mass of the particle defined in N
+
+  public:
+    double GetSn() const;
+    double GetSp() const;
+    double GetS2n() const;
+    double GetS2p() const;
+    double GetSt() const;
+    double GetS3He() const;
+    double GetSa() const;
+    double GetSXn(unsigned int X) const;
+    double GetSXp(unsigned int X) const;
+    void   PrintThreshold() const;
+
   };
 }
 #endif
diff --git a/NPLib/Physics/NPReaction.cxx b/NPLib/Physics/NPReaction.cxx
index 08c7786698bc3ab31e12953803f84ef9f21a4555..8af58373bc4f0f5a5383e98cd8274637f9e1072a 100644
--- a/NPLib/Physics/NPReaction.cxx
+++ b/NPLib/Physics/NPReaction.cxx
@@ -43,6 +43,7 @@
 #include <vector>
 
 #include "NPReaction.h"
+#include "NPCore.h"
 #include "NPOptionManager.h"
 #include "NPFunction.h"
 
@@ -85,7 +86,9 @@ ClassImp(Reaction)
 
     fshoot3=true;
     fshoot4=true;
+    fUseExInGeant4=true;
     RandGen=new TRandom3();
+    fUseExInGeant4=true;
 
     fLabCrossSection=false; // flag if the provided cross-section is in the lab or not
 
@@ -151,7 +154,7 @@ Reaction::Reaction(string reaction){
 
   fCrossSectionHist = new TH1F(Form("EnergyHist_%i",offset),"Reaction_CS",1,0,180);
   fDoubleDifferentialCrossSectionHist = NULL ;
-  
+
   fshoot3=true;
   fshoot4=true;
   RandGen=new TRandom3();
@@ -218,9 +221,9 @@ double Reaction::ShootRandomThetaCM(){
     SetThetaCM( theta );
   }
   else{
-    // When root perform a Spline interpolation to shoot random number out of 
+    // When root perform a Spline interpolation to shoot random number out of
     // the distribution, it can over shoot and output a number larger that 180
-    // this lead to an additional signal at 0-4 deg Lab, especially when using a 
+    // this lead to an additional signal at 0-4 deg Lab, especially when using a
     // flat distribution.
     // This fix it.
     theta=181;
@@ -228,9 +231,9 @@ double Reaction::ShootRandomThetaCM(){
       theta=fCrossSectionHist->GetRandom();
 
     SetThetaCM( theta*deg );
-    }
-   
-    
+  }
+
+
   return theta;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -251,7 +254,7 @@ void Reaction::KineRelativistic(double& ThetaLab3, double& KineticEnergyLab3,
   if (m1 > m2) theta = M_PI - fThetaCM;
   fEnergyImpulsionCM_3	= TLorentzVector(pCM_3*sin(theta),0,pCM_3*cos(theta),ECM_3);
   fEnergyImpulsionCM_4	= fTotalEnergyImpulsionCM - fEnergyImpulsionCM_3;
-  
+
   fEnergyImpulsionLab_3 = fEnergyImpulsionCM_3;
   fEnergyImpulsionLab_3.Boost(0,0,BetaCM);
   fEnergyImpulsionLab_4 = fEnergyImpulsionCM_4;
@@ -269,7 +272,7 @@ void Reaction::KineRelativistic(double& ThetaLab3, double& KineticEnergyLab3,
   // Kinetic Energy in the lab frame
   KineticEnergyLab3 = fEnergyImpulsionLab_3.E() - m3;
   KineticEnergyLab4 = fEnergyImpulsionLab_4.E() - m4;
-  
+
   // test for total energy conversion
   //if (fabs(fTotalEnergyImpulsionLab.E() - (fEnergyImpulsionLab_3.E()+fEnergyImpulsionLab_4.E())) > 1e-6)
   //  cout << "Problem for energy conservation" << endl;
@@ -308,15 +311,15 @@ double  Reaction::EnergyLabToThetaCM(double EnergyLab, double ThetaLab){
 //Return EnergyLab
 double  Reaction::EnergyLabFromThetaLab(double ThetaLab){
   //ThetaLab in rad
-  
+
   // NB
-  // Tis member function is in progress 
+  // Tis member function is in progress
   // Classic treatment need to be changed to relativistic!!
   //
 
   //Treat Exeptions
   if(fBeamEnergy==0) return m4*fQValue/(m3+m4);
-  
+
   //Solve the equation
   double m4e = m4 + fExcitation4;
   //Possible problem with this calculation, decide on m4e or m4 in the following formula
@@ -327,26 +330,26 @@ double  Reaction::EnergyLabFromThetaLab(double ThetaLab){
   //
   //Solution: sqrt(T3) = r * (cos +/- sqrt(Delta)) ;
   //where Delta =cos*cos - s/(r*r)
-   
+
   //Select solutions according to delta values
   double Delta = cos(ThetaLab)*cos(ThetaLab)-s/(r*r);
   double EnergyLab=0;
 
   if(Delta<0) return 0;
-  else 
+  else
     if(Delta==0) EnergyLab =r*cos(ThetaLab);
+    else {
+      double sol1 = r*(cos(ThetaLab) + sqrt(Delta));
+      double sol2 = r*(cos(ThetaLab) - sqrt(Delta));
+
+      if(sol1<0  && sol2<0) return 0;
+      else if(sol1>0  && sol2<0) EnergyLab =sol1*sol1;
+      else if(sol1<0  && sol2>0) EnergyLab = sol2*sol2;
       else {
-       double sol1 = r*(cos(ThetaLab) + sqrt(Delta));
-       double sol2 = r*(cos(ThetaLab) - sqrt(Delta));
-       
-       if(sol1<0  && sol2<0) return 0;
-       else if(sol1>0  && sol2<0) EnergyLab =sol1*sol1;
-       else if(sol1<0  && sol2>0) EnergyLab = sol2*sol2;
-       else {
         if(RandGen->Rndm()<0.5) EnergyLab = sol1*sol1; // choose either of the solutions
-          else EnergyLab = sol2*sol2;
-       }
+        else EnergyLab = sol2*sol2;
       }
+    }
 
   return(EnergyLab);
 }
@@ -367,7 +370,7 @@ void Reaction::Print() const{
   cout << "Qgg = " << fQValue << " MeV" << endl;
 }
 
-//////////////////////////////////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////////////////////////////////
 void Reaction::ReadConfigurationFile(string Path){
   ifstream ReactionFile;
   string GlobalPath = getenv("NPTOOL");
@@ -383,6 +386,39 @@ void Reaction::ReadConfigurationFile(string Path){
   NPL::InputParser parser(Path);
   ReadConfigurationFile(parser);
 }
+////////////////////////////////////////////////////////////////////////////////
+Nucleus Reaction::GetNucleus(string name, NPL::InputParser parser){
+
+
+  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithTokenAndValue("DefineNucleus",name);
+  unsigned int size = blocks.size();
+  if(size==0)
+    return NPL::Nucleus(name);
+  else if(size==1){
+    cout << " -- User defined nucleus " << name << " -- " << endl;
+    vector<string> token = {"SubPart","BindingEnergy"};
+    if(blocks[0]->HasTokenList(token)){
+      NPL::Nucleus N(name,blocks[0]->GetVectorString("SubPart"),blocks[0]->GetDouble("BindingEnergy","MeV"));
+      if(blocks[0]->HasToken("ExcitationEnergy"))
+        N.SetExcitationEnergy(blocks[0]->GetDouble("ExcitationEnergy","MeV"));
+      if(blocks[0]->HasToken("SpinParity"))
+        N.SetSpinParity(blocks[0]->GetString("SpinParity").c_str());
+      if(blocks[0]->HasToken("Spin"))
+        N.SetSpin(blocks[0]->GetDouble("Spin",""));
+      if(blocks[0]->HasToken("Parity"))
+        N.SetParity(blocks[0]->GetString("Parity").c_str());
+      if(blocks[0]->HasToken("LifeTime"))
+        N.SetLifeTime(blocks[0]->GetDouble("LifeTime","s"));
+
+    cout << " -- -- -- -- -- -- -- -- -- -- --" << endl;
+      return N;
+    }
+  }
+  else{
+    NPL::SendErrorAndExit("NPL::Reaction","Too many nuclei define with the same name");
+  }
+}
+
 //////////////////////////////////////////////////////////////////////////////////////////////////////////
 void Reaction::ReadConfigurationFile(NPL::InputParser parser){
 
@@ -402,19 +438,18 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser){
       NPOptionManager::getInstance()->SetVerboseLevel(v);
 
       fBeamEnergy= fNuclei1.GetEnergy();
-
-      fNuclei2 = Nucleus(blocks[i]->GetString("Target"));
-      fNuclei3 = Nucleus(blocks[i]->GetString("Light"));
-      fNuclei4 = Nucleus(blocks[i]->GetString("Heavy"));
+      fNuclei2 = GetNucleus(blocks[i]->GetString("Target"),parser);
+      fNuclei3 = GetNucleus(blocks[i]->GetString("Light"),parser);
+      fNuclei4 = GetNucleus(blocks[i]->GetString("Heavy"),parser);
     }
     else if(blocks[i]->HasTokenList(token2)){
       fNuclei1.SetVerboseLevel(0);
       fNuclei1.ReadConfigurationFile(parser);
       fBeamEnergy= fNuclei1.GetEnergy();
 
-      fNuclei2 = Nucleus(blocks[i]->GetString("Target"));
-      fNuclei3 = Nucleus(blocks[i]->GetString("Nuclei3"));
-      fNuclei4 = Nucleus(blocks[i]->GetString("Nuclei4"));
+      fNuclei2 = GetNucleus(blocks[i]->GetString("Target"),parser);
+      fNuclei3 = GetNucleus(blocks[i]->GetString("Nuclei3"),parser);
+      fNuclei4 = GetNucleus(blocks[i]->GetString("Nuclei4"),parser);
     }
     else{
       cout << "ERROR: check your input file formatting \033[0m" << endl;
@@ -425,7 +460,7 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser){
       fExcitation1 = blocks[i]->GetDouble("ExcitationEnergyBeam","MeV");
     }
     else if(blocks[i]->HasToken("ExcitationEnergy1")){
-      fExcitation1 = blocks[i]->GetDouble("ExcitationEnergy1","MeV"); 
+      fExcitation1 = blocks[i]->GetDouble("ExcitationEnergy1","MeV");
     }
 
     if(blocks[i]->HasToken("ExcitationEnergyLight"))
@@ -467,7 +502,7 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser){
       SetCrossSectionHist(CStemp);
       delete fsin;
     }
-    
+
 
     if(blocks[i]->HasToken("DoubleDifferentialCrossSectionPath")){
       vector<string> file = blocks[i]->GetVectorString("DoubleDifferentialCrossSectionPath");
@@ -502,8 +537,16 @@ void Reaction::ReadConfigurationFile(NPL::InputParser parser){
     if(blocks[i]->HasToken("ShootLight")){
       fshoot3 = blocks[i]->GetInt("ShootLight");
     }
+    if(blocks[i]->HasToken("UseExInGeant4")){
+      // This option will not change the Ex of the produced ion in G4 Tracking
+      // This is to be set to true when using a Ex distribution without decay
+      // Otherwise the Ion Table size grew four ech event slowing down the
+      // simulation
+      fUseExInGeant4 = blocks[i]->GetInt("UseExInGeant4");
+    }
+
   }
-  SetCSAngle(CSHalfOpenAngleMin,CSHalfOpenAngleMax);
+  SetCSAngle(CSHalfOpenAngleMin/deg,CSHalfOpenAngleMax/deg);
   initializePrecomputeVariable();
   cout << "\033[0m" ;
 }
@@ -517,7 +560,7 @@ void Reaction::initializePrecomputeVariable(){
   if(fExcitation1>=0) fNuclei1.SetExcitationEnergy(fExcitation1); // Write over the beam excitation energy
 
   //fNuclei1.GetExcitationEnergy() is a copy of fExcitation1
-  m1 = fNuclei1.Mass() + fNuclei1.GetExcitationEnergy();// in case of isomeric state, 
+  m1 = fNuclei1.Mass() + fNuclei1.GetExcitationEnergy();// in case of isomeric state,
   m2 = fNuclei2.Mass();
   m3 = fNuclei3.Mass() + fExcitation3;
   m4 = fNuclei4.Mass() + fExcitation4;
@@ -540,8 +583,8 @@ void Reaction::initializePrecomputeVariable(){
   fImpulsionLab_1 = TVector3(0,0,sqrt(fBeamEnergy*fBeamEnergy + 2*fBeamEnergy*m1));
   fImpulsionLab_2 = TVector3(0,0,0);
 
-  fEnergyImpulsionLab_1 = TLorentzVector(fImpulsionLab_1,m1+fBeamEnergy);
-  fEnergyImpulsionLab_2 = TLorentzVector(fImpulsionLab_2,m2);
+  fEnergyImpulsionLab_1= TLorentzVector(fImpulsionLab_1,m1+fBeamEnergy);
+  fEnergyImpulsionLab_2= TLorentzVector(fImpulsionLab_2,m2);
 
   fTotalEnergyImpulsionLab = fEnergyImpulsionLab_1 + fEnergyImpulsionLab_2;
 
@@ -725,9 +768,11 @@ void Reaction::PrintKinematic(){
 ////////////////////////////////////////////////////////////////////////////////////////////
 void Reaction::SetCSAngle(double CSHalfOpenAngleMin,double CSHalfOpenAngleMax){
   if(fCrossSectionHist){
-    for (int i = 0 ; i< fCrossSectionHist->GetNbinsX(); i++)
-      if( fCrossSectionHist->GetBinCenter(i) > CSHalfOpenAngleMax && fCrossSectionHist->GetBinCenter(i) < CSHalfOpenAngleMin)
+    for (int i = 0 ; i< fCrossSectionHist->GetNbinsX(); i++){
+      if( fCrossSectionHist->GetBinCenter(i) > CSHalfOpenAngleMax || fCrossSectionHist->GetBinCenter(i) < CSHalfOpenAngleMin){
         fCrossSectionHist->SetBinContent(i,0);
+      }
+    }
   }
 }
 
@@ -740,6 +785,5 @@ bool Reaction::IsAllowed(double Energy){
   if(AvailableEnergy>RequiredEnergy)
     return true;
   else
-    return false; 
-  }
-      
+    return false;
+}
diff --git a/NPLib/Physics/NPReaction.h b/NPLib/Physics/NPReaction.h
index 91663ecce5e2f684eadd7099adc2eb557bf9e5ab..2aec4234d0ed16f1ae9b40355e268f0e4f97e358 100644
--- a/NPLib/Physics/NPReaction.h
+++ b/NPLib/Physics/NPReaction.h
@@ -60,6 +60,7 @@ namespace NPL{
       virtual ~Reaction();
 
     public:  // Various Method
+      Nucleus GetNucleus(string name, NPL::InputParser parser);
       void ReadConfigurationFile(string Path);
       void ReadConfigurationFile(NPL::InputParser);
 
@@ -72,6 +73,7 @@ namespace NPL{
     private: // use for Monte Carlo simulation
       bool fshoot3;
       bool fshoot4;
+      bool fUseExInGeant4; 
       bool fLabCrossSection;
 
     private: // use to display the kinematical line
@@ -97,17 +99,17 @@ namespace NPL{
       TH1F*    fExcitationEnergyHist;    // Distribution of Excitation energy
     public:
       // Getters and Setters
-      void     SetBeamEnergy(double eBeam)      {fBeamEnergy = eBeam;     initializePrecomputeVariable();}
-      void     SetEcm(double Ecm)		{fEcm= Ecm; s=pow(Ecm+m1+m2,2); fBeamEnergy=(s-m1*m1-m2*m2)/(2*m2)-m1; initializePrecomputeVariable();}
-      void     SetThetaCM(double angle)         {fThetaCM = angle;        initializePrecomputeVariable();}
-      void     SetExcitation1(double exci)      {fExcitation1 = exci; initializePrecomputeVariable();}
-      void     SetExcitation3(double exci)      {fExcitation3 = exci; initializePrecomputeVariable();}
-      void     SetExcitation4(double exci)      {fExcitation4 = exci; initializePrecomputeVariable();}
+      void     SetBeamEnergy(const double& eBeam)      {fBeamEnergy = eBeam;     initializePrecomputeVariable();}
+      void     SetEcm(const double& Ecm)		{fEcm= Ecm; s=pow(Ecm+m1+m2,2); fBeamEnergy=(s-m1*m1-m2*m2)/(2*m2)-m1; initializePrecomputeVariable();}
+      void     SetThetaCM(const double& angle)         {fThetaCM = angle;        initializePrecomputeVariable();}
+      void     SetExcitation1(const double& exci)      {fExcitation1 = exci; initializePrecomputeVariable();}
+      void     SetExcitation3(const double& exci)      {fExcitation3 = exci; initializePrecomputeVariable();}
+      void     SetExcitation4(const double& exci)      {fExcitation4 = exci; initializePrecomputeVariable();}
       // For retro compatibility
-      void     SetExcitationBeam(double exci)   {fExcitation1 = exci; initializePrecomputeVariable();}
-      void     SetExcitationLight(double exci)  {fExcitation3 = exci; initializePrecomputeVariable();}
-      void     SetExcitationHeavy(double exci)  {fExcitation4 = exci; initializePrecomputeVariable();}
-      void     SetVerboseLevel(int verbose)     {fVerboseLevel = verbose;}
+      void     SetExcitationBeam(const double& exci)   {fExcitation1 = exci; initializePrecomputeVariable();}
+      void     SetExcitationLight(const double& exci)  {fExcitation3 = exci; initializePrecomputeVariable();}
+      void     SetExcitationHeavy(const double& exci)  {fExcitation4 = exci; initializePrecomputeVariable();}
+      void     SetVerboseLevel(const int& verbose)     {fVerboseLevel = verbose;}
       void     SetCrossSectionHist  (TH1F*  CrossSectionHist)
         {delete fCrossSectionHist; fCrossSectionHist   = CrossSectionHist;}
 
@@ -120,14 +122,15 @@ namespace NPL{
       double   GetExcitation4() const           {return fExcitation4;}
       double   GetQValue() const                {return fQValue;}
       double   GetEcm() const			{return fEcm;}
-      Nucleus  GetNucleus1() const              {return fNuclei1;}
-      Nucleus  GetNucleus2() const              {return fNuclei2;}
-      Nucleus  GetNucleus3() const              {return fNuclei3;}
-      Nucleus  GetNucleus4() const              {return fNuclei4;}
+      Nucleus*  GetNucleus1()               {return &fNuclei1;}
+      Nucleus*  GetNucleus2()               {return &fNuclei2;}
+      Nucleus*  GetNucleus3()               {return &fNuclei3;}
+      Nucleus*  GetNucleus4()               {return &fNuclei4;}
       TH1F*    GetCrossSectionHist() const      {return fCrossSectionHist;}
       int      GetVerboseLevel()         const  {return fVerboseLevel;}
       bool     GetShoot3()         const        {return fshoot3;}
       bool     GetShoot4()         const        {return fshoot4;}
+      bool     GetUseExInGeant4()         const {return fUseExInGeant4;}
 
 
     public:
diff --git a/NPLib/Physics/TInitialConditions.cxx b/NPLib/Physics/TInitialConditions.cxx
index 04f7f95e822c2212845e1dfb2f3ee1d50df0ae94..4618cca002f5f61161bb7f8feb730c7960ca0a97 100644
--- a/NPLib/Physics/TInitialConditions.cxx
+++ b/NPLib/Physics/TInitialConditions.cxx
@@ -38,7 +38,7 @@ TInitialConditions::~TInitialConditions(){
 ////////////////////////////////////////////////////////////////////////////////
 void TInitialConditions::Clear(){
   // Incident beam parameter
-  fIC_Incident_Particle_Name.clear();
+  fIC_Incident_Particle_Name="";
   fIC_Incident_Emittance_ThetaX = -1;
   fIC_Incident_Emittance_PhiY = -1;
   fIC_Incident_Emittance_Theta = -1;
diff --git a/NPLib/Physics/TInitialConditions.h b/NPLib/Physics/TInitialConditions.h
index 3decbf96fa99efe8dc46f23b350310f4df8683fa..010a7920d813fd7919a30548b2abe901a6220df6 100644
--- a/NPLib/Physics/TInitialConditions.h
+++ b/NPLib/Physics/TInitialConditions.h
@@ -72,7 +72,7 @@ public:
     virtual ~TInitialConditions();
     
     void  Clear();
-    void  Clear(const Option_t*) {};
+    void  Clear(const Option_t*) {Clear();};
     void  Dump() const;
     
     /////////////////////           GetTERS           ////////////////////////
diff --git a/NPLib/Physics/TInteractionCoordinates.cxx b/NPLib/Physics/TInteractionCoordinates.cxx
index e4e3b0e69704752dd258eed8f00660858042eab1..f9fafcc1c6b12686bd9dadad00bbfa27b97ab601 100644
--- a/NPLib/Physics/TInteractionCoordinates.cxx
+++ b/NPLib/Physics/TInteractionCoordinates.cxx
@@ -28,39 +28,43 @@ using namespace std;
 
 ClassImp(TInteractionCoordinates)
 
-TInteractionCoordinates::TInteractionCoordinates()
-{
-   // Default constructor
-
-   Clear();
-}
+  TInteractionCoordinates::TInteractionCoordinates(){
+  }
 
 TInteractionCoordinates::~TInteractionCoordinates()
 {}
 
-void TInteractionCoordinates::Clear()
-{
-   // Incident particle properties (before interactions in the target)
-   // Vertex of interaction
-   fDetected_Position_X.clear();
-   fDetected_Position_Y.clear();
-   fDetected_Position_Z.clear();
-   // Incident particle angles
-   fDetected_Angle_Theta.clear();
-   fDetected_Angle_Phi.clear();
+void TInteractionCoordinates::Clear(){
+  // Incident particle properties (before interactions in the target)
+  // Energy and Time
+  fDetected_Energy.clear();
+  fDetected_Time.clear();
+  // Vertex of interaction
+  fDetected_Position_X.clear();
+  fDetected_Position_Y.clear();
+  fDetected_Position_Z.clear();
+  // Incident particle angles
+  fDetected_Angle_Theta.clear();
+  fDetected_Angle_Phi.clear();
 }
 
 
 
-void TInteractionCoordinates::Dump() const
-{
-   cout << "XXXXXXXXXXXXX Interaction coordinates XXXXXXXXXXXXXXXX" << endl;
+void TInteractionCoordinates::Dump() const{
+  cout << "XXXXXXXXXXXXX Interaction coordinates XXXXXXXXXXXXXXXX" << endl;
 
-   cout << "Interaction position : " << endl;
-   cout << "\tX : " << fDetected_Position_X[0] << endl;  
-   cout << "\tY : " << fDetected_Position_Y[0] << endl;  
-   cout << "\tZ : " << fDetected_Position_Z[0] << endl;  
-   cout << "Incident particle angles : " << endl;
-   cout << "\tTheta : " << fDetected_Angle_Theta[0] << endl;
-   cout << "\tPhi   : " << fDetected_Angle_Phi[0] << endl;
+  unsigned int size = fDetected_Energy.size();
+  for(unsigned int i = 0 ; i < size ; i++){
+    cout << " Interaction " << i << " of " << size << endl; 
+    cout << "Energy And Time : " << endl;
+    cout << "Energy : " << fDetected_Energy[0] << endl;
+    cout << "Time : " << fDetected_Time[0] << endl;
+    cout << "Interaction position : " << endl;
+    cout << "\tX : " << fDetected_Position_X[0] << endl;  
+    cout << "\tY : " << fDetected_Position_Y[0] << endl;  
+    cout << "\tZ : " << fDetected_Position_Z[0] << endl;  
+    cout << "Incident particle angles : " << endl;
+    cout << "\tTheta : " << fDetected_Angle_Theta[0] << endl;
+    cout << "\tPhi   : " << fDetected_Angle_Phi[0] << endl;
+  }
 }
diff --git a/NPLib/Physics/TInteractionCoordinates.h b/NPLib/Physics/TInteractionCoordinates.h
index c9627a5c8111849262934fda7b83c55e138f1f3a..1ce1052ccc2a33fd99e676c858bbb9320ce067e1 100644
--- a/NPLib/Physics/TInteractionCoordinates.h
+++ b/NPLib/Physics/TInteractionCoordinates.h
@@ -27,57 +27,69 @@
 
 #include <vector>
 #include "TObject.h"
-
+#include <iostream>
 using namespace std ;
 
 
-class TInteractionCoordinates : public TObject
-{
-private:
-   // Detected particle properties (before interactions in the target)
-   // Vertex of interaction
-   vector<Double_t>   fDetected_Position_X;
-   vector<Double_t>   fDetected_Position_Y;
-   vector<Double_t>   fDetected_Position_Z;
-   // Particle angles
-   vector<Double_t>   fDetected_Angle_Theta;
-   vector<Double_t>   fDetected_Angle_Phi;
+class TInteractionCoordinates : public TObject{
+  private:
+    // Detected particle properties (before interactions in the target)
+    // Energy and Time
+    vector<double> fDetected_Energy;
+    vector<double> fDetected_Time;
+    // Vertex of interaction
+    vector<double>  fDetected_Position_X;
+    vector<double>  fDetected_Position_Y;
+    vector<double>  fDetected_Position_Z;
+    // Particle angles
+    vector<double>  fDetected_Angle_Theta;
+    vector<double>  fDetected_Angle_Phi;
+
+  public:
+    TInteractionCoordinates();
+    virtual ~TInteractionCoordinates();
+
+    void  Clear();
+    void  Clear(const Option_t*) {};
+    void  Dump() const;
+
 
+    void SetInteraction(const double& Energy, const double&Time, const double& PositionX, const double& PositionY, const double& PositionZ,const double& Theta, const double& Phi){
+      fDetected_Energy.push_back(Energy);
+      fDetected_Time.push_back(Time);
+      fDetected_Position_X.push_back(PositionX);
+      fDetected_Position_Y.push_back(PositionY);
+      fDetected_Position_Z.push_back(PositionZ);
+      fDetected_Angle_Theta.push_back(Theta);
+      fDetected_Angle_Phi.push_back(Phi);
+    }
 
-public:
-   TInteractionCoordinates();
-   virtual ~TInteractionCoordinates();
-/*
-   void  Clear();
-   void  Dump();
-*/
-   void  Clear();
-   void  Clear(const Option_t*) {};
-   void  Dump() const;
+    /////////////////////           SETTERS           ////////////////////////
+    // Incident particle properties (before interactions in the target)
+    // Vertex of interaction
+    void SetDetectedPositionX(const double& PositionX)      {fDetected_Position_X.push_back(PositionX);}//!
+    void SetDetectedPositionY(const double& PositionY)      {fDetected_Position_Y.push_back(PositionY);}//!
+    void SetDetectedPositionZ(const double& PositionZ)      {fDetected_Position_Z.push_back(PositionZ);}//!
+    // Incident particle angles
+    void SetDetectedAngleTheta(const double& AngleTheta)  {fDetected_Angle_Theta.push_back(AngleTheta);}//!
+    void SetDetectedAnglePhi(const double& AnglePhi)      {fDetected_Angle_Phi.push_back(AnglePhi);}//!
 
-   /////////////////////           SETTERS           ////////////////////////
-   // Incident particle properties (before interactions in the target)
-   // Vertex of interaction
-   void SetDetectedPositionX(Double_t PositionX)      {fDetected_Position_X.push_back(PositionX);}
-   void SetDetectedPositionY(Double_t PositionY)      {fDetected_Position_Y.push_back(PositionY);}
-   void SetDetectedPositionZ(Double_t PositionZ)      {fDetected_Position_Z.push_back(PositionZ);}
-   // Incident particle angles
-   void SetDetectedAngleTheta(Double_t AngleTheta)  {fDetected_Angle_Theta.push_back(AngleTheta);}
-   void SetDetectedAnglePhi(Double_t AnglePhi)      {fDetected_Angle_Phi.push_back(AnglePhi);}
+    /////////////////////           GETTERS           ////////////////////////
+    // Number of interactions (multiplicity)
+    int    GetDetectedMultiplicity() const     {return fDetected_Position_X.size();}
+    // Incident particle properties (before interactions in the target)
+    // Enery and Time
+    double GetEnergy(const int& i) const {return fDetected_Energy[i];}//!
+    double GetTime(const int& i) const   {return fDetected_Time[i];}//!
+    // Vertex of interaction
+    double GetDetectedPositionX(const int& i) const   {return fDetected_Position_X[i];}//!
+    double GetDetectedPositionY(const int& i) const   {return fDetected_Position_Y[i];}//!
+    double GetDetectedPositionZ(const int& i) const   {return fDetected_Position_Z[i];}//!
+    // Incident particle angles
+    double GetDetectedAngleTheta(const int& i) const {return fDetected_Angle_Theta[i];}//!
+    double GetDetectedAnglePhi(const int& i) const   {return fDetected_Angle_Phi[i];}//!
 
-   /////////////////////           GETTERS           ////////////////////////
-   // Number of interactions (multiplicity)
-   Int_t    GetDetectedMultiplicity()      {return fDetected_Position_X.size();}
-   // Incident particle properties (before interactions in the target)
-   // Vertex of interaction
-   Double_t GetDetectedPositionX(Int_t i)   {return fDetected_Position_X[i];}
-   Double_t GetDetectedPositionY(Int_t i)   {return fDetected_Position_Y[i];}
-   Double_t GetDetectedPositionZ(Int_t i)   {return fDetected_Position_Z[i];}
-   // Incident particle angles
-   Double_t GetDetectedAngleTheta(Int_t i) {return fDetected_Angle_Theta[i];}
-   Double_t GetDetectedAnglePhi(Int_t i)   {return fDetected_Angle_Phi[i];}
-   
-   ClassDef(TInteractionCoordinates, 1) // InteractionCoordinates structure
+    ClassDef(TInteractionCoordinates, 2) // InteractionCoordinates structure
 };
 
 #endif
diff --git a/NPLib/Physics/TReactionConditions.cxx b/NPLib/Physics/TReactionConditions.cxx
index ec1cc69e4066e76b4b306dae5464bd1b577a8a5e..cb6e9d6deade56168fa0b74af29f8093bec42c91 100644
--- a/NPLib/Physics/TReactionConditions.cxx
+++ b/NPLib/Physics/TReactionConditions.cxx
@@ -57,14 +57,13 @@ void TReactionConditions::Clear(){
     fRC_Momentum_Direction_X.clear();
     fRC_Momentum_Direction_Y.clear();
     fRC_Momentum_Direction_Z.clear();
-    
 }
 ////////////////////////////////////////////////////////////////////////////////
 void TReactionConditions::Dump() const{
     cout << "--------- Initial Condition Dump ---------" << endl ;
     
     // Beam beam parameter
-    cout << "\t ---- Beam Beam ---- " << endl;
+    cout << "\t ---- Beam ---- " << endl;
     cout << "\t Particle Name:  " << fRC_Beam_Particle_Name << endl;
     cout << "\t Reaction Energy: " << fRC_Beam_Reaction_Energy << endl;
     cout << "\t Theta_X: " << fRC_Beam_Emittance_ThetaX << endl;
@@ -86,15 +85,14 @@ void TReactionConditions::Dump() const{
     unsigned int size = fRC_Particle_Name.size();
     for(unsigned int i = 0 ; i < size; i ++){
         cout << "\t ---- Particle " << i << " ---- " << endl;
-        cout << "\t Particle Name" <<   fRC_Particle_Name[i] << endl;
-        cout << "\t Energy" <<   fRC_Kinetic_Energy[i] << endl;
+        cout << "\t Particle Name: " <<   fRC_Particle_Name[i] << endl;
+        cout << "\t Kinetic Energy: " <<   fRC_Kinetic_Energy[i] << endl;
         cout << "\t Momentum Direction: ( "
         << fRC_Momentum_Direction_X[i] << " ; "
         << fRC_Momentum_Direction_Y[i] << " ; "
         << fRC_Momentum_Direction_Z[i] << ")" << endl;
     }
 
-    
    
 }
 ////////////////////////////////////////////////////////////////////////////////
diff --git a/NPLib/Physics/TReactionConditions.h b/NPLib/Physics/TReactionConditions.h
index 2a6769cce08f98cce779071ebe50851f66adf6a8..2a46cb1ca32368f8a6dd2157dc0c2c752a7bba80 100644
--- a/NPLib/Physics/TReactionConditions.h
+++ b/NPLib/Physics/TReactionConditions.h
@@ -56,7 +56,8 @@ private:
     double fRC_Vertex_Position_X;
     double fRC_Vertex_Position_Y;
     double fRC_Vertex_Position_Z;
-    
+    double fRC_ExcitationEnergy3;
+    double fRC_ExcitationEnergy4;
     double fRC_ThetaCM;
     // emmitted particles
     vector<string> fRC_Particle_Name;
@@ -72,31 +73,32 @@ public:
     virtual ~TReactionConditions();
     
     void  Clear();
-    void  Clear(const Option_t*) {};
+    void  Clear(const Option_t*) {Clear();};
     void  Dump() const;
     
     /////////////////////           SETTERS           ////////////////////////
     // Beam parameter
-    void SetBeamParticleName   (const string &Beam_Particle_Name)   {fRC_Beam_Particle_Name = Beam_Particle_Name;}//!
-    void SetBeamReactionEnergy  (const double &Beam_Reaction_Energy) {fRC_Beam_Reaction_Energy  = Beam_Reaction_Energy;}//!
-    void SetBeamEmittanceTheta (const double &Beam_Emittance_Theta) {fRC_Beam_Emittance_Theta = Beam_Emittance_Theta;}//!
-    void SetBeamEmittancePhi   (const double &Beam_Emittance_Phi)   {fRC_Beam_Emittance_Phi   = Beam_Emittance_Phi;}//!
-    void SetBeamEmittanceThetaX (const double &Beam_Emittance_ThetaX) {fRC_Beam_Emittance_ThetaX = Beam_Emittance_ThetaX;}//!
-    void SetBeamEmittancePhiY   (const double &Beam_Emittance_PhiY)   {fRC_Beam_Emittance_PhiY   = Beam_Emittance_PhiY;}//!
+    void SetBeamParticleName   (const string & Beam_Particle_Name)   {fRC_Beam_Particle_Name = Beam_Particle_Name;}//!
+    void SetBeamReactionEnergy  (const double & Beam_Reaction_Energy) {fRC_Beam_Reaction_Energy  = Beam_Reaction_Energy;}//!
+    void SetBeamEmittanceTheta (const double & Beam_Emittance_Theta) {fRC_Beam_Emittance_Theta = Beam_Emittance_Theta;}//!
+    void SetBeamEmittancePhi   (const double & Beam_Emittance_Phi)   {fRC_Beam_Emittance_Phi   = Beam_Emittance_Phi;}//!
+    void SetBeamEmittanceThetaX (const double & Beam_Emittance_ThetaX) {fRC_Beam_Emittance_ThetaX = Beam_Emittance_ThetaX;}//!
+    void SetBeamEmittancePhiY   (const double & Beam_Emittance_PhiY)   {fRC_Beam_Emittance_PhiY   = Beam_Emittance_PhiY;}//!
     // Beam status at the initial interaction point
-    void SetVertexPositionX     (const double &Vertex_Position_X)      {fRC_Vertex_Position_X     = Vertex_Position_X;}//!
-    void SetVertexPositionY     (const double &Vertex_Position_Y)      {fRC_Vertex_Position_Y     = Vertex_Position_Y;}//!
-    void SetVertexPositionZ     (const double &Vertex_Position_Z)      {fRC_Vertex_Position_Z     = Vertex_Position_Z;}//!
-
-    void SetThetaCM            (const double &ThetaCM)               {fRC_ThetaCM = ThetaCM;}//!
+    void SetVertexPositionX     (const double & Vertex_Position_X)      {fRC_Vertex_Position_X     = Vertex_Position_X;}//!
+    void SetVertexPositionY     (const double & Vertex_Position_Y)      {fRC_Vertex_Position_Y     = Vertex_Position_Y;}//!
+    void SetVertexPositionZ     (const double & Vertex_Position_Z)      {fRC_Vertex_Position_Z     = Vertex_Position_Z;}//!
+    void SetExcitationEnergy3  (const double& Ex) {fRC_ExcitationEnergy3=Ex;};//!
+    void SetExcitationEnergy4  (const double& Ex) {fRC_ExcitationEnergy4=Ex;};//!
+    void SetThetaCM            (const double & ThetaCM)               {fRC_ThetaCM = ThetaCM;}//!
     
     // emmitted particles
-    void SetParticleName       (const string &Particle_Name)         {fRC_Particle_Name.push_back(Particle_Name);}//!
-    void SetTheta              (const double &Angle)                 {fRC_Theta.push_back(Angle);}//!
-    void SetKineticEnergy      (const double &Kinetic_Energy)        {fRC_Kinetic_Energy.push_back(Kinetic_Energy);}//!
-    void SetMomentumDirectionX (const double &Momentum_Direction_X)  {fRC_Momentum_Direction_X.push_back(Momentum_Direction_X);}//!
-    void SetMomentumDirectionY (const double &Momentum_Direction_Y)  {fRC_Momentum_Direction_Y.push_back(Momentum_Direction_Y);}//!
-    void SetMomentumDirectionZ (const double &Momentum_Direction_Z)  {fRC_Momentum_Direction_Z.push_back(Momentum_Direction_Z);}//!
+    void SetParticleName       (const string & Particle_Name)         {fRC_Particle_Name.push_back(Particle_Name);}//!
+    void SetTheta              (const double & Angle)                 {fRC_Theta.push_back(Angle);}//!
+    void SetKineticEnergy      (const double & Kinetic_Energy)        {fRC_Kinetic_Energy.push_back(Kinetic_Energy);}//!
+    void SetMomentumDirectionX (const double & Momentum_Direction_X)  {fRC_Momentum_Direction_X.push_back(Momentum_Direction_X);}//!
+    void SetMomentumDirectionY (const double & Momentum_Direction_Y)  {fRC_Momentum_Direction_Y.push_back(Momentum_Direction_Y);}//!
+    void SetMomentumDirectionZ (const double & Momentum_Direction_Z)  {fRC_Momentum_Direction_Z.push_back(Momentum_Direction_Z);}//!
     
     /////////////////////           GETTERS           ////////////////////////
     // Beam parameter
@@ -111,7 +113,8 @@ public:
     double GetVertexPositionX     () const {return fRC_Vertex_Position_X     ;}//!
     double GetVertexPositionY     () const {return fRC_Vertex_Position_Y     ;}//!
     double GetVertexPositionZ     () const {return fRC_Vertex_Position_Z     ;}//!
-
+    double GetExcitation3         () const {return fRC_ExcitationEnergy3     ;}//!       
+    double GetExcitation4         () const {return fRC_ExcitationEnergy4     ;}//!       
     double GetThetaCM             () const {return fRC_ThetaCM;}//!
     
     // emmitted particles
diff --git a/NPLib/ressources/DetectorSkeleton/NPSimulation/DETECTORNAME.cc b/NPLib/ressources/DetectorSkeleton/NPSimulation/DETECTORNAME.cc
index 0127cc08f64de32ca56de6f258ef65867d5a7f1a..eaf177ebbe2e5b10677f3ba2d406f52bbbe3ebf9 100644
--- a/NPLib/ressources/DetectorSkeleton/NPSimulation/DETECTORNAME.cc
+++ b/NPLib/ressources/DetectorSkeleton/NPSimulation/DETECTORNAME.cc
@@ -41,6 +41,7 @@
 // NPTool header
 #include "DETECTORNAME.hh"
 #include "CalorimeterScorers.hh"
+#include "InteractionScorers.hh"
 #include "RootOutput.h"
 #include "MaterialManager.hh"
 #include "NPSDetectorFactory.hh"
@@ -224,31 +225,24 @@ void DETECTORNAME::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void DETECTORNAME::ReadSensitive(const G4Event* event){
+void DETECTORNAME::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // Calorimeter scorer
-  NPS::HitsMap<G4double*>* CaloHitMap;
-  std::map<G4int, G4double**>::iterator Calo_itr;
+  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_DETECTORNAMEScorer->GetPrimitive(0);
 
-  G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("DETECTORNAMEScorer/Calorimeter");
-  CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-
-  // Loop on the Calo map
-  for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-
-    G4double* Info = *(Calo_itr->second);
-    double Energy = RandGauss::shoot(Info[0],DETECTORNAME_NS::ResoEnergy);
+  unsigned int size = Scorer->GetMult(); 
+  for(unsigned int i = 0 ; i < size ; i++){
+    vector<unsigned int> level = Scorer->GetLevel(i); 
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),DETECTORNAME_NS::ResoEnergy);
     if(Energy>DETECTORNAME_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Info[1],DETECTORNAME_NS::ResoTime);
-      int DetectorNbr = (int) Info[2];
+      double Time = RandGauss::shoot(Scorer->GetTime(i),DETECTORNAME_NS::ResoTime);
+      int DetectorNbr = level[0];
       m_Event->SetEnergy(DetectorNbr,Energy);
       m_Event->SetTime(DetectorNbr,Time); 
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -263,9 +257,11 @@ void DETECTORNAME::InitializeScorers() {
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_Calorimeter("Calorimeter",level, 0) ;
+  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
+  G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("Interaction",ms_InterCoord, 0) ;
   //and register it to the multifunctionnal detector
   m_DETECTORNAMEScorer->RegisterPrimitive(Calorimeter);
+  m_DETECTORNAMEScorer->RegisterPrimitive(Interaction);
   G4SDManager::GetSDMpointer()->AddNewDetector(m_DETECTORNAMEScorer) ;
 }
 
diff --git a/NPSimulation/Core/DetectorConstruction.cc b/NPSimulation/Core/DetectorConstruction.cc
index 69aeb655f62b9a9a355240960dcd1f6bea771506..b73c50c7ba49bcd7f2f0f276308fe87013b8d397 100644
--- a/NPSimulation/Core/DetectorConstruction.cc
+++ b/NPSimulation/Core/DetectorConstruction.cc
@@ -199,14 +199,6 @@ G4VPhysicalVolume* DetectorConstruction::ReadConfigurationFile(){
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void DetectorConstruction::ReadAllSensitive(const G4Event* event){
-  // Before looping on each sub-detector, clear the static variable
-  // ms_InterCoord
-  // This is done on the first element of the m_Modules vector.
-  // This should be done here since this variable (of type TIneractionCoordinates)
-  // deals with multiplicity of events > 1.
-  if(m_Detectors.size()>0)
-    m_Detectors[0]->GetInterCoordPointer()->Clear();
-
   unsigned int mysize =  m_Detectors.size();
   for (unsigned short i = 0 ; i < mysize ; i++) {
     (m_Detectors[i]->*m_ReadSensitivePtr)(event);    
diff --git a/NPSimulation/Core/DetectorConstruction.hh b/NPSimulation/Core/DetectorConstruction.hh
index d273b3a42f486d6eae741a765d2b97f5325d139c..d1a762e181bd9e03570d53585630fd3661396186 100644
--- a/NPSimulation/Core/DetectorConstruction.hh
+++ b/NPSimulation/Core/DetectorConstruction.hh
@@ -61,7 +61,10 @@ class DetectorConstruction : public G4VUserDetectorConstruction{
     G4VPhysicalVolume* ReadConfigurationFile();
     void AddDetector(NPS::VDetector*);
     void ReadAllSensitive(const G4Event*);
-
+    void ClearInteractionCoordinates(){
+       if(m_Detectors.size()>0)
+        m_Detectors[0]->GetInterCoordPointer()->Clear();
+      };
 
   private:
     // Logical volumes
diff --git a/NPSimulation/Core/EventAction.cc b/NPSimulation/Core/EventAction.cc
index bb88725eab7c91346a8b9823fab8906ac7d9bdd4..17ae4f3124f978c6ae5034aaccca78ebf6353eb0 100644
--- a/NPSimulation/Core/EventAction.cc
+++ b/NPSimulation/Core/EventAction.cc
@@ -61,10 +61,12 @@ void EventAction::EndOfEventAction(const G4Event* event){
     m_detector->ReadAllSensitive(event) ;
     static TTree* tree =  RootOutput::getInstance()->GetTree();
     tree->Fill();
-    if(treated%10000==0){
-        tree->AutoSave();
-        RootOutput::getInstance()->GetFile()->SaveSelf(kTRUE);
-    }
+    m_detector->ClearInteractionCoordinates();
+//    if(treated%10000==0){
+//        tree->AutoSave();
+//        RootOutput::getInstance()->GetFile()->SaveSelf(kTRUE);
+//    }
+
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -104,12 +106,18 @@ void EventAction::ProgressDisplay(){
         else
             sprintf(star,"-------");
         
-        if(treated!=total && mean_rate >=0 && remain>=0 && displayed>1)
+        if(treated!=total && mean_rate >=1000 && remain>=0 && displayed>1)
             printf("\r \033[1;31m %s Progress:  %.1f%% | Rate: %.1fk evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate/1000.,timer,star);
         
-        else if(mean_rate >=0 && remain>=0 && displayed>1){
+        else if(mean_rate >=1000 && remain>=0 && displayed>1){
             printf("\r \033[1;32m %s Progress: %.1f%% | Rate: %.1fk evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate/1000.,timer,star);
         }
+        else if( treated!=total && mean_rate >= 0 && remain>=0 && displayed>1)
+            printf("\r \033[1;31m %s Progress:  %.1f%% | Rate: %.1f evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate,timer,star);
+        
+        else if(mean_rate >=0 && remain>=0 && displayed>1){
+            printf("\r \033[1;32m %s Progress: %.1f%% | Rate: %.1f evt/s | Remain: %s %s\033[0m        ", star,percent,mean_rate,timer,star);
+        }
         fflush(stdout);
         inter=0;
         begin = clock() ;
diff --git a/NPSimulation/Core/PrimaryGeneratorAction.cc b/NPSimulation/Core/PrimaryGeneratorAction.cc
index 0d41dabb44387e9181a45882ecfe9e2e515a5c1e..6226326cba41fcb3f50a0f7227781efe5e9d96a0 100644
--- a/NPSimulation/Core/PrimaryGeneratorAction.cc
+++ b/NPSimulation/Core/PrimaryGeneratorAction.cc
@@ -40,12 +40,9 @@
 #include "ParticleStack.hh"
 
 // Event Generator Class
-#include "EventGeneratorTwoBodyReaction.hh"
 #include "EventGeneratorIsotropic.hh"
 #include "EventGeneratorMultipleParticle.hh"
 #include "EventGeneratorBeam.hh"
-#include "EventGeneratorGammaDecay.hh"
-#include "EventGeneratorParticleDecay.hh"
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 PrimaryGeneratorAction::PrimaryGeneratorAction(DetectorConstruction* det): m_detector(det){
@@ -112,34 +109,6 @@ void PrimaryGeneratorAction::ReadEventGeneratorFile(string Path){
         if(m_detector->GetTarget()!=NULL)myEventGenerator->SetTarget(m_detector->GetTarget());
         m_EventGenerator.push_back(myEventGenerator);
     }
-    /*  blocks.clear();
-     blocks = parser.GetAllBlocksWithToken("TwoBodyReaction");
-     if (blocks.size()>0) {
-     NPS::VEventGenerator* myEventGenerator = new EventGeneratorTwoBodyReaction();
-     myEventGenerator->ReadConfiguration(parser);
-     myEventGenerator->InitializeRootOutput();
-     myEventGenerator->SetTarget(m_detector->GetTarget());
-     m_EventGenerator.push_back(myEventGenerator);
-     }
-     blocks.clear();
-     blocks = parser.GetAllBlocksWithToken("GammaCascade");
-     if (blocks.size()>0) {
-     NPS::VEventGenerator* myEventGenerator = new EventGeneratorGammaDecay();
-     myEventGenerator->ReadConfiguration(parser);
-     myEventGenerator->InitializeRootOutput();
-     myEventGenerator->SetTarget(m_detector->GetTarget());
-     m_EventGenerator.push_back(myEventGenerator);
-     }
-     blocks.clear();
-     blocks = parser.GetAllBlocksWithToken("ParticleDecay");
-     if (blocks.size()>0) {
-     NPS::VEventGenerator* myEventGenerator = new EventGeneratorParticleDecay();
-     myEventGenerator->ReadConfiguration(parser);
-     myEventGenerator->InitializeRootOutput();
-     myEventGenerator->SetTarget(m_detector->GetTarget());
-     m_EventGenerator.push_back(myEventGenerator);
-     }
-     */
     
     m_Target=m_detector->GetTarget();
     if(m_Target!=NULL){
diff --git a/NPSimulation/Detectors/AGATA/AGATA.cc b/NPSimulation/Detectors/AGATA/AGATA.cc
index 897e818cd0c507215819ca828b3a695a9fc1169d..2b5d1a717f3b6e9a48c7d64a137538ec8578ad3d 100644
--- a/NPSimulation/Detectors/AGATA/AGATA.cc
+++ b/NPSimulation/Detectors/AGATA/AGATA.cc
@@ -209,35 +209,23 @@ void AGATA::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void AGATA::ReadSensitive(const G4Event* event){
+void AGATA::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // Calorimeter scorer
-  NPS::HitsMap<G4double*>* CaloHitMap;
-  std::map<G4int, G4double**>::iterator Calo_itr;
+    CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_AGATAScorer->GetPrimitive(0);
 
-  G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("AGATAScorer/Crystal");
-  CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-
-  // Loop on the Calo map
-  for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-
-    G4double* Info = *(Calo_itr->second);
-    //(Info[0]/2.35)*((Info[0]*1.02)*pow((Info[0]*1.8),.5))
-    // double Energy = RandGauss::shoot(Info[0],((Info[0]*1000*1.02/2.35)*pow((Info[0]*1000*1.8),.5)) );
-    double Energy = RandGauss::shoot(Info[0],AGATA_NS::ResoEnergy);
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),AGATA_NS::ResoEnergy);
     if(Energy>AGATA_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Info[1],AGATA_NS::ResoTime);
-      int DetectorNbr = (int) Info[7];
-      double Angle = RandGauss::shoot(Info[5]/deg,AGATA_NS::ResoAngle);
+      double Time = RandGauss::shoot(Scorer->GetTime(i),AGATA_NS::ResoTime);
+      int DetectorNbr = Scorer->GetLevel(i)[0];
       m_Event->SetEnergy(DetectorNbr,Energy);
-      m_Event->SetAngle(DetectorNbr,Angle);
       m_Event->SetTime(DetectorNbr,Time); 
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -252,7 +240,7 @@ void AGATA::InitializeScorers() {
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(1);
-  G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("Crystal",level, 0) ;
+  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Crystal",level, 0) ;
   //and register it to the multifunctionnal detector
   m_AGATAScorer->RegisterPrimitive(Calorimeter);
   G4SDManager::GetSDMpointer()->AddNewDetector(m_AGATAScorer) ;
diff --git a/NPSimulation/Detectors/Actar/Actar.cc b/NPSimulation/Detectors/Actar/Actar.cc
index cc373d3c058be3993aa2c167f7d17dc791834f2a..98592a35e713c7354dfbd8a08a643c91256fce35 100644
--- a/NPSimulation/Detectors/Actar/Actar.cc
+++ b/NPSimulation/Detectors/Actar/Actar.cc
@@ -1,18 +1,18 @@
 /*****************************************************************************
- * Copyright (C) 2009-2017   this file is part of the NPTool Project       *
+ * Copyright (C) 2009-2017   this file is part of the NPTool Project         *
  *                                                                           *
  * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
  * For the list of contributors see $NPTOOL/Licence/Contributors             *
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: Pierre Morfouace  contact address: morfouac@nscl.msu.edu                        *
+ * Original Author: Pierre Morfouace  contact address: morfouac@nscl.msu.edu *
  *                                                                           *
  * Creation Date  : September 2017                                           *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe  Actar simulation                             *
+ *  This class describe  Actar simulation                                    *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -52,7 +52,7 @@
 
 // NPTool header
 #include "Actar.hh"
-#include "SiliconScorers.hh"
+#include "DSSDScorers.hh"
 #include "TPCScorers.hh"
 #include "RootOutput.h"
 #include "MaterialManager.hh"
@@ -86,43 +86,43 @@ namespace Actar_NS{
     //const int NumberOfPads = 16384;
     //const int PadX = 128;
     //const int PadZ = 128;
-    
+
     const double Nose_Rmin = 2.5*cm;
     const double Nose_Rmax = 3.5*cm;
     const double Nose_Length = 12*cm;
-    
+
     const double Mylar_Rmax = 3.5*cm;
     const double Mylar_Thickness = 7*micrometer;
-    
+
     const double XGazVolume = 256.*mm;
     const double YGazVolume = 256.*mm;
     const double ZGazVolume = 256.*mm;
-    
+
     const double SiliconHeight = 53.*mm;
     const double SiliconWidth = 53.*mm;
     const double SiliconThickness = 0.7*mm;
     const double DistInterSi = 1.*mm;
     const double Si_PosZ=175.*mm;
-    const double ResoSilicon = 0.80/2.35;
+    const double ResoSilicon = 0.60/2.35;
     const double EnergyThreshold = 0.1;
-    
+
     const double VamosSiliconHeight = 70*mm;
     const double VamosSiliconWidth = 50*mm;
     const double VamosSiliconThickness = 0.5*mm;
     const double VamosSiliconDistanInterSi = 1*mm;
     const double VamosSilicon_PosZ = -160*mm;
-    
+
     const double CsIThickness = 1.*cm;
     const double CsIHeight = 2.5*cm;
     const double CsIWidth = 2.5*cm;
     const double DistInterCsI = 1.*mm;
     const double CsI_PosZ = 16.*cm;
     const double ResoCsI = 0.200/2.35;
-    
+
     const double BeamDumpRadius = 30*mm;
     const double BeamDumpThickness = 5*mm;
     const double BeamDump_PosZ = 160*mm;
-    
+
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -133,7 +133,7 @@ Actar::Actar(){
     m_EventReduced = new MEventReduced();
     m_ActarScorer = 0;
     m_SquareDetector = 0;
-    
+
     // RGB Color + Transparency
     m_VisChamber        = new G4VisAttributes(G4Colour(0.7, 0.7, 0.7, 0.3));
     m_VisWindows        = new G4VisAttributes(G4Colour(1, 0, 0, 0.25));
@@ -144,14 +144,14 @@ Actar::Actar(){
     m_CsIVisAtt         = new G4VisAttributes(G4Colour(0.429412, 0.607843, 0.780392, 0.95));
     m_BeamDumpVisAtt    = new G4VisAttributes(G4Colour(0.9, 0.5, 0.5));
     m_VisPads->SetForceWireframe(true);
-    
+
     m_build_BeamDump= 0;
     m_build_Silicon=1;
     m_build_Vamos_Silicon=0;
     m_build_CsI=1;
-    
+
     // Lookup table //
-    bool ReadingLookupTable = false;
+   // bool ReadingLookupTable = false;
     string LT_FileName = "./Detectors/Actar/LT.dat";
     ifstream LTConfigFile;
     LTConfigFile.open(LT_FileName.c_str());
@@ -172,10 +172,10 @@ Actar::Actar(){
                 m_PadToChannel[pX][pY] = ch;
             }
         }
-        ReadingLookupTable = true;
+        //ReadingLookupTable = true;
     }
     LTConfigFile.close();
-    
+
 }
 
 Actar::~Actar(){
@@ -200,51 +200,51 @@ void Actar::AddDetector(double  R, double  Theta, double  Phi, string  Shape){
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Actar::BuildDetector(){
-    
+
     G4Material* Cu= MaterialManager::getInstance()->GetMaterialFromLibrary("Cu");
     G4Material* Si= MaterialManager::getInstance()->GetMaterialFromLibrary("Si");
     G4Material* Al= MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
     G4Material* Mylar= MaterialManager::getInstance()->GetMaterialFromLibrary("Mylar");
     G4Material* MaterialCsI = MaterialManager::getInstance()->GetMaterialFromLibrary("CsI");
-    
+
     if(!m_SquareDetector){
         // Main volume
         G4Box* sChamber = new G4Box("Actar_Box",Actar_NS::ChamberWidth*0.5,
                                     Actar_NS::ChamberHeight*0.5,Actar_NS::ChamberThickness*0.5);
-        
+
         //Nose volume
         G4Tubs* sNose = new G4Tubs("Actar_Nose",Actar_NS::Nose_Rmin, Actar_NS::Nose_Rmax,Actar_NS::Nose_Length*0.5,
                                    0*deg, 360*deg);
-        
+
         //Mylar volume
         G4Tubs* sWindows = new G4Tubs("Actar_Windows",0, Actar_NS::Mylar_Rmax,Actar_NS::Mylar_Thickness*0.5,
                                       0*deg, 360*deg);
-        
+
         // Cage volume
         G4Box* sCage = new G4Box("Actar_Gas",Actar_NS::XGazVolume*0.5,
                                  Actar_NS::YGazVolume*0.5,Actar_NS::ZGazVolume*0.5);
-        
+
         // Pad
         G4Box* sPad = new G4Box("Actar_Pad",256*mm*0.5,
                                 2*mm*0.5,256*mm*0.5);
-        
+
         // Micromegas
         G4Box* sMicromegas = new G4Box("Actar_Micromegas",256*mm*0.5,
                                        220*micrometer*0.5,256*mm*0.5);
-        
+
         // Cathode
         G4Box* sCathode = new G4Box("Actar_Cathode",26.5*cm*0.5,
                                     1*um*0.5,25.6*cm*0.5);
-        
-        
-        
+
+
+
         unsigned const int NumberOfGasMix = m_GasMaterial.size();
-        
+
         double density=0;
         double density_sum=0;
         vector<G4Material*> GasComponent;
         vector<double> FractionMass;
-        
+
         for(unsigned int i=0; i<NumberOfGasMix; i++){
             GasComponent.push_back(MaterialManager::getInstance()->GetGasFromLibrary(m_GasMaterial[i],m_Pressure,m_Temperature) );
         }
@@ -253,20 +253,20 @@ G4LogicalVolume* Actar::BuildDetector(){
             density_sum += GasComponent[i]->GetDensity();
         }
         //cout << "density = " << density*cm3/g << endl;
-        
+
         for(unsigned int i=0; i<NumberOfGasMix; i++){
             FractionMass.push_back(GasComponent[i]->GetDensity()/density_sum);
         }
-        
+
         G4Material* GasMaterial = new G4Material("GasMix", density, NumberOfGasMix, kStateGas, m_Temperature, m_Pressure);
         G4Material* DriftGasMaterial = new G4Material("DriftGasMix", density, NumberOfGasMix, kStateGas, m_Temperature, m_Pressure);
-        
+
         for(unsigned int i=0; i<NumberOfGasMix; i++){
             GasMaterial->AddMaterial(GasComponent[i], FractionMass[i]);
             DriftGasMaterial->AddMaterial(GasComponent[i], FractionMass[i]);
             cout << GasComponent[i] << endl;
         }
-        
+
         G4MaterialPropertiesTable* MPT = new G4MaterialPropertiesTable();
         MPT->AddConstProperty("DE_PAIRENERGY",20*eV);
         MPT->AddConstProperty("DE_YIELD",3e-1);
@@ -275,45 +275,45 @@ G4LogicalVolume* Actar::BuildDetector(){
         MPT->AddConstProperty("DE_DRIFTSPEED",0.8*cm/microsecond);
         MPT->AddConstProperty("DE_TRANSVERSALSPREAD",2e-5*mm2/ns);
         MPT->AddConstProperty("DE_LONGITUDINALSPREAD",7e-5*mm2/ns);
-        
+
         DriftGasMaterial->SetMaterialPropertiesTable(MPT);
-        
+
         G4MaterialPropertiesTable* MPT2 = new G4MaterialPropertiesTable();
         MPT2->AddConstProperty("DE_AMPLIFICATION",1000);
         MPT2->AddConstProperty("DE_ABSLENGTH",1*pc);
-        
+
         Al->SetMaterialPropertiesTable(MPT2);
-        
+
         m_SquareDetector    = new G4LogicalVolume(sChamber,GasMaterial,"logic_Actar_Box",0,0,0);
         m_logicGas          = new G4LogicalVolume(sCage,DriftGasMaterial,"logic_Gas",0,0,0);
         G4LogicalVolume* logicPad = new G4LogicalVolume(sPad,Cu,"logic_Pad",0,0,0);
         G4LogicalVolume* logicMicromegas = new G4LogicalVolume(sMicromegas,Al,"logic_Micromegas",0,0,0);
-        
+
         G4LogicalVolume* logicNose = new G4LogicalVolume(sNose,Cu,"logic_Nose",0,0,0);
-        G4LogicalVolume* logicCathode = new G4LogicalVolume(sCathode,Cu,"logic_Cathode",0,0,0);
+        /*G4LogicalVolume* logicCathode = */ new G4LogicalVolume(sCathode,Cu,"logic_Cathode",0,0,0);
         G4LogicalVolume* logicWindows = new G4LogicalVolume(sWindows,Mylar,"logic_Windows",0,0,0);
-        
+
         G4RotationMatrix* Rot = new G4RotationMatrix();
         //new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(0,0,-Actar_NS::ChamberThickness*0.5+Actar_NS::Nose_Length*0.5)),
         //                logicNose,
         //              "ActarNose",m_SquareDetector,false,0);
-        
+
         //new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(0,0,-Actar_NS::ChamberThickness*0.5+Actar_NS::Mylar_Thickness*0.5+Actar_NS::Nose_Length)),
         //                logicWindows,
         //              "ActarEntranceWindows",m_SquareDetector,false,0);
-        
+
         new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(0,0,0)),
                           m_logicGas,
                           "ActarGas",m_SquareDetector,false,0);
-        
+
         //new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(0,Actar_NS::YGazVolume*0.5-0.3*cm,0)),
           //                logicMicromegas,
             //              "ActarMicromegas",m_logicGas,false,0);
-        
+
         new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(0,Actar_NS::YGazVolume*0.5,0)),
                           logicPad,
                           "ActarPad",m_logicGas,false,0);
-        
+
         /*int pad=0;
          m_PadToXRow.clear();
          m_PadToZColumn.clear();
@@ -326,40 +326,40 @@ G4LogicalVolume* Actar::BuildDetector(){
          new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(X,Actar_NS::YGazVolume*0.5,Z)),
          logicPad,
          "ActarPad",m_logicGas,false,pad+1);
-         
+
          pad++;
          }
          }*/
-        
+
         /*new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(3*cm-0.5*1*um,0,0)),
          logicCathode,
          "ActarCathode",m_logicGas,false,0);
-         
-         
-         
+
+
+
          new G4PVPlacement(G4Transform3D(*Rot,G4ThreeVector(0,0,-6*cm+6*micrometer)),
          logicWindows,
          "ActarEntranceWindows",m_SquareDetector,false,0);*/
-        
+
         G4ElectricField* field = new G4UniformElectricField(G4ThreeVector(0.0,-400*volt/cm,0.0));
         // Create an equation of motion for this field
         G4EqMagElectricField*  Equation = new G4EqMagElectricField(field);
         G4MagIntegratorStepper* Stepper = new G4ClassicalRK4( Equation, 8 );
-        
+
         // Get the global field manager
         G4FieldManager* FieldManager= new G4FieldManager();
         // Set this field to the global field manager
         FieldManager->SetDetectorField(field);
         m_logicGas->SetFieldManager(FieldManager,true);
-        
+
         G4MagInt_Driver* IntgrDriver = new G4MagInt_Driver(0.1*mm,
                                                            Stepper,
                                                            Stepper->GetNumberOfVariables() );
-        
+
         G4ChordFinder* ChordFinder = new G4ChordFinder(IntgrDriver);
         FieldManager->SetChordFinder( ChordFinder );
-        
-        
+
+
         logicPad->SetSensitiveDetector(m_ActarScorer);
         logicNose->SetVisAttributes(m_VisChamber);
         m_SquareDetector->SetVisAttributes(m_VisChamber);
@@ -369,8 +369,8 @@ G4LogicalVolume* Actar::BuildDetector(){
         logicMicromegas->SetVisAttributes(m_VisMicromegas);
         //m_SquareDetector->SetSensitiveDetector(m_ActarScorer);
     }
-    
-    
+
+
     ////////////////////////////////////////////////////
     ///////////////////// Beam Dump ////////////////////
     ////////////////////////////////////////////////////
@@ -378,15 +378,15 @@ G4LogicalVolume* Actar::BuildDetector(){
         G4Tubs* sBeamDump = new G4Tubs("Actar_BeamDump",0*mm, Actar_NS::BeamDumpRadius,Actar_NS::BeamDumpThickness*0.5,
                                    0*deg, 360*deg);
         m_LogicBeamDump = new G4LogicalVolume(sBeamDump, Cu, "logicBeamDump",0,0,0);
-        
+
         G4ThreeVector positionBeamDump = G4ThreeVector(0, 0, Actar_NS::BeamDump_PosZ);
         new G4PVPlacement(new G4RotationMatrix(0,0,0),
                           positionBeamDump,
                           m_LogicBeamDump,"BeamDump",
                           m_SquareDetector,false,0);
-        
+
         m_LogicBeamDump->SetVisAttributes(m_BeamDumpVisAtt) ;
-    
+
     }
     ///////////////////////////////////////////////////
     ///////////////////// Thin Si /////////////////////
@@ -395,7 +395,7 @@ G4LogicalVolume* Actar::BuildDetector(){
     if(m_build_Silicon){
         G4Box* solidSi = new G4Box("Si", 0.5*Actar_NS::SiliconWidth, 0.5*Actar_NS::SiliconHeight, 0.5*Actar_NS::SiliconThickness);	;
         m_LogicSilicon = new G4LogicalVolume(solidSi, Si, "logicSi", 0, 0, 0);
-        
+
         for(int k=0;k<4; k++){
             for(int p=0; p<5; p++){
                 double PosX;
@@ -409,7 +409,7 @@ G4LogicalVolume* Actar::BuildDetector(){
                 if(p==2) PosX= 0;
                 if(p==3) PosX= 1*Actar_NS::SiliconWidth+2*Actar_NS::DistInterSi;
                 if(p==4) PosX= 2*Actar_NS::SiliconWidth+1*Actar_NS::DistInterSi;
-                
+
                 G4ThreeVector positionSi = G4ThreeVector(PosX, PosY, Actar_NS::Si_PosZ);
                 new G4PVPlacement(new G4RotationMatrix(0,0,0),
                                   positionSi,
@@ -418,22 +418,22 @@ G4LogicalVolume* Actar::BuildDetector(){
                 SiliconNumber++;
             }
         }
-        
+
         // Set Si sensible
         m_LogicSilicon->SetSensitiveDetector(m_SiliconScorer);
-        
+
         // Visualisation of ThinSi
         m_LogicSilicon->SetVisAttributes(m_SiliconVisAtt);
     }
-    
+
     ////////////////////////////////////////////////////
     ///////////////////// Vamos Si /////////////////////
     ////////////////////////////////////////////////////
     if(m_build_Vamos_Silicon){
         G4Box* solidSi = new G4Box("Si", 0.5*Actar_NS::VamosSiliconWidth, 0.5*Actar_NS::VamosSiliconHeight, 0.5*Actar_NS::VamosSiliconThickness);	;
         m_LogicVamosSilicon = new G4LogicalVolume(solidSi, Si, "logicVamosSi", 0, 0, 0);
-        
-        
+
+
         int VamosSiliconNumber=0;
         for(int k=0;k<4; k++){
             for(int p=0; p<3; p++){
@@ -447,7 +447,7 @@ G4LogicalVolume* Actar::BuildDetector(){
                 if(p==0) PosY= -Actar_NS::VamosSiliconHeight-Actar_NS::VamosSiliconDistanInterSi;
                 if(p==1) PosY= 0;
                 if(p==2) PosY= Actar_NS::VamosSiliconHeight+Actar_NS::VamosSiliconDistanInterSi;
-                
+
                 G4ThreeVector positionSi = G4ThreeVector(PosX, PosY, Actar_NS::VamosSilicon_PosZ);
                 new G4PVPlacement(new G4RotationMatrix(0,0,0),
                                   positionSi,
@@ -457,21 +457,21 @@ G4LogicalVolume* Actar::BuildDetector(){
                 SiliconNumber++;
             }
         }
-        
+
         // Set Si sensible
         m_LogicVamosSilicon->SetSensitiveDetector(m_SiliconScorer);
-        
+
         // Visualisation of ThinSi
         m_LogicVamosSilicon->SetVisAttributes(m_SiliconVisAtt);
     }
-    
+
     ///////////////////////////////////////////////
     ///////////////////// CsI /////////////////////
     ///////////////////////////////////////////////
     if(m_build_CsI){
         G4Box* solidCsI = new G4Box("Si", 0.5*Actar_NS::CsIWidth, 0.5*Actar_NS::CsIHeight, 0.5*Actar_NS::CsIThickness);	;
         m_LogicCsICrystal = new G4LogicalVolume(solidCsI, MaterialCsI, "logicCsI", 0, 0, 0);
-        
+
         int CsINumber=0;
         for(int k=0;k<8; k++){
             for(int p=0; p<10; p++){
@@ -479,10 +479,10 @@ G4LogicalVolume* Actar::BuildDetector(){
                 double PosY;
                 if(k<4) PosY= -0.5*Actar_NS::CsIHeight-0.5*Actar_NS::DistInterCsI+(k-3)*(Actar_NS::CsIHeight+Actar_NS::DistInterCsI);
                 if(k>3) PosY= 0.5*Actar_NS::CsIHeight+0.5*Actar_NS::DistInterCsI+(k-4)*(Actar_NS::CsIHeight+Actar_NS::DistInterCsI);
-                
+
                 if(p<5) PosX= 0.5*Actar_NS::CsIWidth+0.5*Actar_NS::DistInterCsI+(4-p)*(Actar_NS::CsIWidth+Actar_NS::DistInterCsI);
                 if(p>4) PosX= -0.5*Actar_NS::CsIWidth-0.5*Actar_NS::DistInterCsI+(5-p)*(Actar_NS::CsIWidth+Actar_NS::DistInterCsI);
-                
+
                 G4ThreeVector positionCsI = G4ThreeVector(PosX, PosY, Actar_NS::CsI_PosZ);
                 new G4PVPlacement(new G4RotationMatrix(0,0,0),
                                   positionCsI,
@@ -491,14 +491,14 @@ G4LogicalVolume* Actar::BuildDetector(){
                 CsINumber++;
             }
         }
-        
+
         // Set Si sensible
         m_LogicCsICrystal->SetSensitiveDetector(m_CsIScorer);
-        
+
         // Visualisation of ThinSi
         m_LogicCsICrystal->SetVisAttributes(m_CsIVisAtt) ;
     }
-    
+
     return m_SquareDetector;
 }
 
@@ -514,15 +514,15 @@ void Actar::ReadConfiguration(NPL::InputParser parser){
     vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("Actar");
     if(NPOptionManager::getInstance()->GetVerboseLevel())
         cout << "//// " << blocks.size() << " detectors found " << endl;
-    
+
     vector<string> cart = {"POS","Shape","GasMaterial","GasFraction","Temperature","Pressure","Si","VamosSi","CsI","BeamDump"};
     //vector<string> sphe = {"R","Theta","Phi","Shape","GasMaterial","GasFraction","Temperature","Pressure","Si","CsI","BeamDump"};
-    
+
     for(unsigned int i = 0 ; i < blocks.size() ; i++){
         if(blocks[i]->HasTokenList(cart)){
             if(NPOptionManager::getInstance()->GetVerboseLevel())
                 cout << endl << "////  Actar " << i+1 <<  endl;
-            
+
             G4ThreeVector Pos = NPS::ConvertVector(blocks[i]->GetTVector3("POS","mm"));
             string Shape = blocks[i]->GetString("Shape");
             vector<string> GasName = blocks[i]->GetVectorString("GasMaterial");
@@ -537,7 +537,7 @@ void Actar::ReadConfiguration(NPL::InputParser parser){
             m_build_Vamos_Silicon = blocks[i]->GetInt("VamosSi");
             m_build_CsI     =  blocks[i]->GetInt("CsI");
             m_build_BeamDump = blocks[i]->GetInt("BeamDump");
-            
+
             AddDetector(Pos,Shape);
         }
         /*else if(blocks[i]->HasTokenList(sphe)){
@@ -557,7 +557,7 @@ void Actar::ReadConfiguration(NPL::InputParser parser){
             m_Pressure = blocks[i]->GetDouble("Pressure","bar");
             m_build_Silicon =  blocks[i]->GetInt("Si");
             m_build_CsI     =  blocks[i]->GetInt("CsI");
-            
+
             AddDetector(R,Theta,Phi,Shape);
         }*/
         else{
@@ -574,7 +574,7 @@ void Actar::ReadConfiguration(NPL::InputParser parser){
 // Called After DetecorConstruction::AddDetector Method
 void Actar::ConstructDetector(G4LogicalVolume* world){
     for (unsigned short i = 0 ; i < m_R.size() ; i++) {
-        
+
         G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] ) ;
         G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] ) ;
         G4double wZ = m_R[i] * cos(m_Theta[i] ) ;
@@ -591,42 +591,42 @@ void Actar::ConstructDetector(G4LogicalVolume* world){
         G4ThreeVector v = w.cross(u);
         v = v.unit();
         u = u.unit();
-        
+
         G4RotationMatrix* Rot = new G4RotationMatrix(u,v,w);
-        
+
         new G4PVPlacement(G4Transform3D(*Rot,Det_pos),
                           BuildDetector(),
                           "Actar",world,false,i+1);
     }
-    
+
     if(!m_ReactionRegion){
         G4ProductionCuts* ecut = new G4ProductionCuts();
         ecut->SetProductionCut(1000,"e-");
-        
+
         m_ReactionRegion= new G4Region("NPSimulationProcess");
         m_ReactionRegion->SetProductionCuts(ecut);
         m_ReactionRegion->AddRootLogicalVolume(m_logicGas);
         m_ReactionRegion->SetUserLimits(new G4UserLimits(1.2*mm));
-        
+
         G4Region* Region_cut = new G4Region("RegionCut");
         Region_cut->SetProductionCuts(ecut);
         Region_cut->AddRootLogicalVolume(m_SquareDetector);
     }
-    
+
     G4FastSimulationManager* mng = m_ReactionRegion->GetFastSimulationManager();
-    
+
     unsigned int size = m_ReactionModel.size();
     for(unsigned int i = 0 ; i < size ; i++){
         mng->RemoveFastSimulationModel(m_ReactionModel[i]);
     }
-    
+
     m_ReactionModel.clear();
     G4VFastSimulationModel* fsm;
     fsm = new NPS::BeamReaction("BeamReaction",m_ReactionRegion);
     m_ReactionModel.push_back(fsm);
     fsm = new NPS::Decay("Decay",m_ReactionRegion);
     m_ReactionModel.push_back(fsm);
-    
+
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Add Detector branch to the EventTree.
@@ -645,41 +645,31 @@ void Actar::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Actar::ReadSensitive(const G4Event* event){
+void Actar::ReadSensitive(const G4Event*){
     m_EventReduced->CoboAsad.clear();
-    
-    
+    static ReducedData DataReduced;
+
+
     //////////////
     // Pad scorer
-    NPS::HitsMap<G4double*>* PadHitMap;
-    std::map<G4int, G4double**>::iterator Pad_itr;
-    
-    G4int PadCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(m_ActarCollectionID);
-    PadHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(PadCollectionID));
+    TPCScorers::PS_TPCCathode* PadScorer= (TPCScorers::PS_TPCCathode*) m_ActarScorer->GetPrimitive(0);
+    unsigned int size = PadScorer->GetMult();
     // Loop on the Pad map
     //TH1D* h = new TH1D("h","h",25000,0,25000);
-    for (Pad_itr = PadHitMap->GetMap()->begin() ; Pad_itr != PadHitMap->GetMap()->end() ; Pad_itr++){
-        ReducedData DataReduced;
-        G4double* Info = *(Pad_itr->second);
-        // Interraction Coordinates
-        ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-        ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-        ms_InterCoord->SetDetectedPositionZ(Info[4]) ;
-        ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-        ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
-        
-        float Count = RandGauss::shoot(Info[0],Actar_NS::ResoCharge*Info[0]);
-        float Time =  Info[1];//RandGauss::shoot(Info[1],Actar_NS::ResoTime);
+    for (unsigned int i = 0 ; i < size ; i++){
+        DataReduced.clear();
+        double Count = RandGauss::shoot(PadScorer->GetCharge(i),Actar_NS::ResoCharge*PadScorer->GetCharge(i));
+        double Time =  PadScorer->GetTime(i);//RandGauss::shoot(Info[1],Actar_NS::ResoTime);
         //int iTime = ((int) Time*20/512)+1;
-        int PadNbr = Info[7];
-        int Pad_X = Info[8];//m_PadToXRow[PadNbr];
-        int Pad_Y = Info[9];//m_PadToZColumn[PadNbr];
-        
+        //int PadNbr = Info[7];
+        int Pad_X = PadScorer->GetPadX(i);//m_PadToXRow[PadNbr];
+        int Pad_Y = PadScorer->GetPadY(i);//m_PadToZColumn[PadNbr];
+
         int co = m_PadToCobo[Pad_X][Pad_Y];
         int as = m_PadToAsad[Pad_X][Pad_Y];
         int ag = m_PadToAGET[Pad_X][Pad_Y];
         int ch = m_PadToChannel[Pad_X][Pad_Y];
-        
+
         if(Count>Actar_NS::ChargeThreshold){
             DataReduced.globalchannelid = ch+(ag<<7)+(as<<9)+(co<<11);
             DataReduced.peakheight.push_back(Count);
@@ -687,28 +677,35 @@ void Actar::ReadSensitive(const G4Event* event){
         }
         m_EventReduced->CoboAsad.push_back(DataReduced);
     }
-    PadHitMap->clear();
-    
+
+    /*vector<double> Q, T;
+     for(int i=0; i<h->GetNbinsX(); i++){
+     double count = h->GetBinContent(i);
+     double time = h->GetBinCenter(i);
+     if(count){
+     Q.push_back(count);
+     T.push_back(time+500);
+
+     }
+     }
+     // clear map for next event
+     SimulateDigitizer(Q,T,1.40*microsecond,0,8750,25,5);
+     delete h;*/
+
     // Silicon //
     if(m_build_Silicon){
-        ReducedData DataReduced;
-        
-        NPS::HitsMap<G4double*>* SiHitMap;
-        std::map<G4int, G4double**>::iterator Si_itr;
-        
-        G4int SiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(m_SiliconCollectionID);
-        SiHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(SiCollectionID));
-        
-        // Loop on the ThinSi map
-        for (Si_itr = SiHitMap->GetMap()->begin() ; Si_itr != SiHitMap->GetMap()->end() ; Si_itr++){
-            G4double* Info = *(Si_itr->second);
-            double E_Si = RandGauss::shoot(Info[0],Actar_NS::ResoSilicon);
-            
-            int co=31;
-            int as=0;
-            int ag=0;
-            int ch=Info[7];
-            
+      DSSDScorers::PS_Rectangle* SiScorer= (DSSDScorers::PS_Rectangle*) m_SiliconScorer->GetPrimitive(0);
+      unsigned int sizeSi = SiScorer->GetLengthMult();
+      // Loop on the ThinSi map
+      for(unsigned int i = 0 ; i < sizeSi ; i++){
+            DataReduced.clear();
+            double E_Si = RandGauss::shoot(SiScorer->GetEnergyLength(i),Actar_NS::ResoSilicon);
+
+            int co = 31;
+            int as = 0;
+            int ag = 0;
+            int ch = SiScorer->GetDetectorLength(i);
+
             if(E_Si>Actar_NS::EnergyThreshold){
                 DataReduced.globalchannelid = ch+(ag<<7)+(as<<9)+(co<<11);
                 DataReduced.peaktime.push_back(ch);
@@ -717,44 +714,39 @@ void Actar::ReadSensitive(const G4Event* event){
             m_EventReduced->CoboAsad.push_back(DataReduced);
         }
         // Clear Map for next event
-        SiHitMap->clear();
+        SiScorer->clear();
     }
-    
+
     // CsI //
     if(m_build_CsI){
-        NPS::HitsMap<G4double*>* CsIHitMap;
-        std::map<G4int, G4double**>::iterator CsI_itr;
-        
-        G4int CsICollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(m_CsICollectionID);
-        CsIHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CsICollectionID));
-        
-        // Loop on the CsI map
-        for (CsI_itr = CsIHitMap->GetMap()->begin() ; CsI_itr !=CsIHitMap->GetMap()->end() ; CsI_itr++){
-            G4double* Info = *(CsI_itr->second);
-            double E_CsI = RandGauss::shoot(Info[0],Actar_NS::ResoCsI);
-            
+       CalorimeterScorers::PS_Calorimeter* CsIScorer= (CalorimeterScorers::PS_Calorimeter*) m_CsIScorer->GetPrimitive(0);
+      unsigned int sizeCsI = CsIScorer->GetMult();
+      // Loop on the ThinSi map
+      for(unsigned int i = 0 ; i < sizeCsI ; i++){
+            DataReduced.clear();
+            vector<unsigned int> level = CsIScorer->GetLevel(i);
+            //double E_CsI = RandGauss::shoot(CsIScorer->GetEnergy(i),Actar_NS::ResoCsI);
+
             /*if(E_CsI>Actar_NS::EnergyThreshold){
              m_Event->SetCsIEnergy(E_CsI);
-             m_Event->SetCsICrystalNumber(Info[2]);
+             m_Event->SetCsICrystalNumber(level[0]);
              }
              m_EventReduced->CoboAsad.push_back(DataReduced);*/
         }
-        // Clear Map for next event
-        CsIHitMap->clear();
     }
 
-    
+
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 /*void Actar::SimulateDigitizer(vector<double> E, vector<double> T, double fallTime,double start,double stop, double step,double noise){
- 
+
  static string formula;
  formula= "";
  static string Es,Ts,var,cond;
  static string fall;
  fall=std::to_string(fallTime);
- 
+
  for(unsigned int i = 0 ; i < E.size() ; i++){
  if(E[i]!=0 && T[i]!=0){
  Es = std::to_string(E[i]);
@@ -772,7 +764,7 @@ void Actar::ReadSensitive(const G4Event* event){
  double time = start+i*step;
  double energy = f->Eval(time)+noise*(1-2*G4UniformRand());
  }
- 
+
  delete f;
  }*/
 
@@ -780,32 +772,32 @@ void Actar::ReadSensitive(const G4Event* event){
 ////////////////////////////////////////////////////////////////
 void Actar::InitializeScorers() {
     // This check is necessary in case the geometry is reloaded
-    
+
     bool already_exist = false;
     vector<G4int> NestingLevel;
     NestingLevel.push_back(0);
     NestingLevel.push_back(2);
-    
+
     m_ActarScorer   = CheckScorer("ActarScorer",already_exist) ;
     m_SiliconScorer = CheckScorer("SiliconScorer",already_exist);
     //m_VamosSiliconScorer = CheckScorer("VamosSiliconScorer",already_exist);
     m_CsIScorer     = CheckScorer("CsIScorer",already_exist);
-    
+
     if(already_exist) return;
-    
-    G4VPrimitiveScorer* SiScorer = new SILICONSCORERS::PS_Silicon_Rectangle("SiliconScorer",0,Actar_NS::SiliconHeight,Actar_NS::SiliconWidth,1,1);
+
+    G4VPrimitiveScorer* SiScorer = new DSSDScorers::PS_Rectangle("SiliconScorer",0,Actar_NS::SiliconHeight,Actar_NS::SiliconWidth,1,1);
     m_SiliconScorer->RegisterPrimitive(SiScorer);
-    
+
     /*G4VPrimitiveScorer* VamosSiScorer = new SILICONSCORERS::PS_Silicon_Rectangle("VamosSiliconScorer",0,Actar_NS::VamosSiliconHeight,Actar_NS::VamosSiliconWidth,1,1);
     m_VamosSiliconScorer->RegisterPrimitive(VamosSiScorer);*/
-    
-    G4VPrimitiveScorer* CsIScorer= new CALORIMETERSCORERS::PS_Calorimeter("CsI",NestingLevel);
+
+    G4VPrimitiveScorer* CsIScorer= new CalorimeterScorers::PS_Calorimeter("CsI",NestingLevel);
     m_CsIScorer->RegisterPrimitive(CsIScorer);
-    
+
     vector<int> level; level.push_back(0);
-    G4VPrimitiveScorer* Actar_dig= new TPCSCORERS::PS_TPCCathode("Actar_dig",0) ;
+    G4VPrimitiveScorer* Actar_dig= new TPCScorers::PS_TPCCathode("Actar_dig",0) ;
     m_ActarScorer->RegisterPrimitive(Actar_dig);
-    
+
     G4SDManager::GetSDMpointer()->AddNewDetector(m_ActarScorer);
     G4SDManager::GetSDMpointer()->AddNewDetector(m_SiliconScorer);
     //G4SDManager::GetSDMpointer()->AddNewDetector(m_VamosSiliconScorer);
@@ -834,6 +826,6 @@ extern"C" {
             NPS::DetectorFactory::getInstance()->AddDetector("Actar",Actar::Construct);
         }
     };
-    
+
     proxy_nps_Actar p_nps_Actar;
 }
diff --git a/NPSimulation/Detectors/AnnularCsI/AnnularCsI.cc b/NPSimulation/Detectors/AnnularCsI/AnnularCsI.cc
index 26baedac923be31db81bf33118a59fe32e0ccfd3..8b877d44356575740e89f8afbc8f659119402cdd 100644
--- a/NPSimulation/Detectors/AnnularCsI/AnnularCsI.cc
+++ b/NPSimulation/Detectors/AnnularCsI/AnnularCsI.cc
@@ -186,32 +186,25 @@ void AnnularCsI::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void AnnularCsI::ReadSensitive(const G4Event* event){
+void AnnularCsI::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // Calorimeter scorer
-  NPS::HitsMap<G4double*>* CaloHitMap;
-  std::map<G4int, G4double**>::iterator Calo_itr;
+  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_AnnularCsIScorer->GetPrimitive(0);
 
-  G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("AnnularCsIScorer/Calorimeter");
-  CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-
-  // Loop on the Calo map
-  for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-
-    G4double* Info = *(Calo_itr->second);
-		double Eres = AnnularCsI_NS::ResoEnergy*Info[0];
-    double Energy = RandGauss::shoot(Info[0],Eres);
+  unsigned int size = Scorer->GetMult(); 
+  for(unsigned int i = 0 ; i < size ; i++){
+    vector<unsigned int> level = Scorer->GetLevel(i); 
+		double Eres = AnnularCsI_NS::ResoEnergy*Scorer->GetEnergy(i);
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Eres);
     if(Energy>AnnularCsI_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Info[1],AnnularCsI_NS::ResoTime);
-      int DetectorNbr = (int) Info[2];
+      double Time = RandGauss::shoot(Scorer->GetTime(i),AnnularCsI_NS::ResoTime);
+      int DetectorNbr = level[0];
       m_Event->SetEnergy(DetectorNbr,Energy);
       m_Event->SetTime(DetectorNbr,Time); 
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -226,7 +219,7 @@ void AnnularCsI::InitializeScorers() {
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_Calorimeter("Calorimeter",level, 0) ;
+  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
   //and register it to the multifunctionnal detector
   m_AnnularCsIScorer->RegisterPrimitive(Calorimeter);
   G4SDManager::GetSDMpointer()->AddNewDetector(m_AnnularCsIScorer) ;
diff --git a/NPSimulation/Detectors/AnnularS1/AnnularS1.cc b/NPSimulation/Detectors/AnnularS1/AnnularS1.cc
index 5cbae4e7642fee8b2dcd1e1477a1c9f1a9b98085..fbad5cdbefd6463ae400508b5f716b6c4ccc799b 100644
--- a/NPSimulation/Detectors/AnnularS1/AnnularS1.cc
+++ b/NPSimulation/Detectors/AnnularS1/AnnularS1.cc
@@ -44,7 +44,8 @@
 #include "MaterialManager.hh"
 #include "NPSDetectorFactory.hh"
 #include "AnnularS1.hh"
-#include "SiliconScorers.hh"
+#include "DSSDScorers.hh"
+#include "InteractionScorers.hh"
 #include "TS1Data.h"
 #include "RootOutput.h"
 #include "NPOptionManager.h"
@@ -299,28 +300,32 @@ void AnnularS1::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void AnnularS1::ReadSensitive(const G4Event* event){
+void AnnularS1::ReadSensitive(const G4Event*){
   // Clear ROOT objects
   m_Event->Clear();
 
-  NPS::HitsMap<G4double*>* SiliconHitMap;
-  std::map<G4int, G4double**>::iterator Silicon_itr;
-
-  G4int SiliconCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("AnnularS1_Scorer/AnnularS1_Scorer");
-  SiliconHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(SiliconCollectionID));
-
-  // Loop on the Silicon map
-  for (Silicon_itr = SiliconHitMap->GetMap()->begin() ; Silicon_itr != SiliconHitMap->GetMap()->end() ; Silicon_itr++){
-    G4double* Info = *(Silicon_itr->second);
-
-    double Energy = Info[0];
+  DSSDScorers::PS_Annular* Scorer= (DSSDScorers::PS_Annular*) m_Scorer->GetPrimitive(0);
+ 
+  // Loop on Silicon Ring Hit
+  unsigned int sizeRing = Scorer->GetRingMult();
+  for(unsigned int i = 0 ; i < sizeRing ; i++){
+    double Energy = Scorer->GetEnergyRing(i);
 
     if(Energy>EnergyThreshold){
-      double Time       = Info[1];
-      int DetNbr        = (int) Info[7];
-      int StripTheta    = (int) Info[8];
-      int StripPhi      = (int) Info[9];
-      int StripQuadrant = (int) Info[10] - 1; 
+      double Time       = Scorer->GetTimeRing(i);
+      unsigned int DetNbr        = Scorer->GetDetectorRing(i);;
+      unsigned int StripTheta    = Scorer->GetStripRing(i);
+       
+       
+      // Check for associated Quadrant strip
+      int StripQuadrant = 0;
+      unsigned int sizeQ = Scorer->GetQuadrantMult();
+      for(unsigned int q = 0 ; q < sizeQ ; q++){
+        if(Scorer->GetDetectorQuadrant(q)==DetNbr){
+          StripQuadrant = Scorer->GetStripQuadrant(q)-1;
+          break;
+          }
+      }
 
       m_Event->SetS1ThetaEDetectorNbr(DetNbr);
       m_Event->SetS1ThetaEStripNbr(StripTheta+StripQuadrant*NbrRingStrips);
@@ -330,6 +335,20 @@ void AnnularS1::ReadSensitive(const G4Event* event){
       m_Event->SetS1ThetaTStripNbr(StripTheta+StripQuadrant*NbrRingStrips);
       m_Event->SetS1ThetaTTime(RandGauss::shoot(Time, ResoTime));
 
+     }
+
+  }
+ 
+ // Loop on Silicon Sector Hit
+ unsigned int sizeSector = Scorer->GetSectorMult();
+ for(unsigned int i = 0 ; i < sizeSector ; i++){ 
+    double Energy = Scorer->GetEnergyRing(i);
+
+    if(Energy>EnergyThreshold){
+      double Time       = Scorer->GetTimeRing(i);
+      unsigned int DetNbr        = Scorer->GetDetectorRing(i);;
+      unsigned int StripPhi      = Scorer->GetStripSector(i);
+     
       m_Event->SetS1PhiEDetectorNbr(DetNbr);
       m_Event->SetS1PhiEStripNbr(StripPhi); 
       m_Event->SetS1PhiEEnergy(RandGauss::shoot(Energy, ResoEnergy));
@@ -337,18 +356,8 @@ void AnnularS1::ReadSensitive(const G4Event* event){
       m_Event->SetS1PhiTDetectorNbr(DetNbr);
       m_Event->SetS1PhiTStripNbr(StripPhi);
       m_Event->SetS1PhiTTime(RandGauss::shoot(Time, ResoTime));
-
-      // Interraction Coordinates
-      ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-      ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-      ms_InterCoord->SetDetectedPositionZ(Info[4]) ;
-      ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-      ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
-
     }
   }
-  // clear map for next event
-  SiliconHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -360,7 +369,7 @@ void AnnularS1::InitializeScorers(){
   if(already_exist) return;
 
   G4VPrimitiveScorer* AnnularScorer =
-    new  SILICONSCORERS::PS_Silicon_Annular("AnnularS1_Scorer",
+    new  DSSDScorers::PS_Annular("AnnularS1_Scorer",
         2,
         ActiveWaferInnerRadius,
         ActiveWaferOutterRadius,
@@ -371,7 +380,8 @@ void AnnularS1::InitializeScorers(){
         NbQuadrant);
 
   m_Scorer->RegisterPrimitive(AnnularScorer);
-
+  G4VPrimitiveScorer* InteractionScorer = new InteractionScorers::PS_Interactions("InteractionS1",ms_InterCoord,2);
+  m_Scorer->RegisterPrimitive(InteractionScorer);
   //  Add All Scorer to the Global Scorer Manager
   G4SDManager::GetSDMpointer()->AddNewDetector(m_Scorer);
 }
diff --git a/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.cc b/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.cc
index ca06a0f219e977fb54415a4fa6c867859cc34bb8..eb7200569b995903da0763942da828e83002ea62 100644
--- a/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.cc
+++ b/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.cc
@@ -194,40 +194,22 @@ void AnnularTelescope::InitializeRootOutput(){
 // Read scorer
 // Helper for ReadSensitive()
 void AnnularTelescope::ReadScorer(
-	const G4Event* event, const char* scorerName,
+	const G4Event* , const string& scorerName,
 	std::vector<HitInfo_t>& hits) {
-	
-	NPS::HitsMap<G4double*>* CaloHitMap;
-	std::map<G4int, G4double**>::iterator Calo_itr;
-
-	G4int CaloCollectionID = 
-		G4SDManager::GetSDMpointer()->GetCollectionID(scorerName);
-	CaloHitMap = (NPS::HitsMap<G4double*>*)(
-		event->GetHCofThisEvent()->GetHC(CaloCollectionID) );
-
-	// Loop on the Calo map
-	for(const auto& hit : *(CaloHitMap->GetMap()) ) {
-		// Read Hit Information
-		//   Infos[0] = aStep->GetTotalEnergyDeposit();
-		//   Infos[1] = aStep->GetPreStepPoint()->GetGlobalTime();
-		//   Infos[2] = m_Position.x();
-		//   Infos[3] = m_Position.y();
-		//   Infos[4] = m_Position.z();
-		//   Infos[5] = m_Position.theta();
-		//   Infos[6] = m_Position.phi();
-		//   Infos[7] = Detector Number
+  CalorimeterScorers::PS_Calorimeter* Scorer=0;
+   if(scorerName =="AnnularTelescopeScorer_CsI/Calorimeter_CsI" )
+    Scorer= (CalorimeterScorers::PS_Calorimeter*) m_AnnularTelescopeScorer_CsI->GetPrimitive(0);
+   else if (scorerName == "AnnularTelescopeScorer_Si/Calorimeter_Si")
+    Scorer= (CalorimeterScorers::PS_Calorimeter*) m_AnnularTelescopeScorer_Si->GetPrimitive(0);
+
+   unsigned int size = Scorer->GetMult(); 
+   for(unsigned int i = 0 ; i < size ; i++){
+        vector<unsigned int> level = Scorer->GetLevel(i); 
 		hits.push_back(HitInfo_t());
-		G4double* Infos = *(hit.second);
-
-		hits.back().detector = int(Infos[7]);
-		hits.back().energy = Infos[0];
-		hits.back().time = Infos[1];
-		hits.back().x = Infos[2];
-		hits.back().y = Infos[3];
-		hits.back().z = Infos[4];
+		hits.back().detector = level[0];
+		hits.back().energy = Scorer->GetEnergy(i);
+		hits.back().time = Scorer->GetTime(i);
 	}
-	// clear map for next event
-	CaloHitMap->clear();	
 }
 
 
@@ -402,7 +384,7 @@ void AnnularTelescope::InitializeScorers() {
 		// Otherwise the scorer is initialised
 		vector<int> level; level.push_back(0);
 		G4VPrimitiveScorer* Calorimeter_CsI =
-			new CALORIMETERSCORERS::PS_CalorimeterWithInteraction(
+			new CalorimeterScorers::PS_Calorimeter(
 				"Calorimeter_CsI",level, 0) ;
 		//and register it to the multifunctionnal detector
 		m_AnnularTelescopeScorer_CsI->RegisterPrimitive(Calorimeter_CsI);
@@ -419,7 +401,7 @@ void AnnularTelescope::InitializeScorers() {
 		// Otherwise the scorer is initialised
 		vector<int> level; level.push_back(0);
 		G4VPrimitiveScorer* Calorimeter_Si =
-			new CALORIMETERSCORERS::PS_CalorimeterWithInteraction(
+			new CalorimeterScorers::PS_Calorimeter(
 				"Calorimeter_Si",level, 0) ;
 		//and register it to the multifunctionnal detector
 		m_AnnularTelescopeScorer_Si->RegisterPrimitive(Calorimeter_Si);
diff --git a/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.hh b/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.hh
index e240ae049cc5a993629a452c752cc44889d4d816..7c297d1375f0884c783e020bf9583c10e841e1b2 100644
--- a/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.hh
+++ b/NPSimulation/Detectors/AnnularTelescope/AnnularTelescope.hh
@@ -14,7 +14,7 @@
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe  AnnularTelescope simulation                               *
+ *  This class describe  AnnularTelescope simulation                         *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -84,7 +84,7 @@ public:
 		G4int detector; G4double energy; G4double time;
 		G4double x; G4double y; G4double z;
 	};
-	void ReadScorer(const G4Event* event, const char* scorerName,
+	void ReadScorer(const G4Event* event, const string& scorerName,
 									std::vector<HitInfo_t>& hits);
 	
 	// Fill NPL CsI Data
diff --git a/NPSimulation/Detectors/CsI/CsI.cc b/NPSimulation/Detectors/CsI/CsI.cc
index 9f776a19e063266915c91a265bc5a1628cf19381..6a7775264a8c41281e4fdf93ca75eeafe8c9d440 100644
--- a/NPSimulation/Detectors/CsI/CsI.cc
+++ b/NPSimulation/Detectors/CsI/CsI.cc
@@ -6,14 +6,14 @@
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: Pierre Morfouace  contact address: morfouac@ipno.in2p3.fr       *
+ * Original Author: Pierre Morfouace  contact address: morfouac@ipno.in2p3.fr*
  *                                                                           *
- * Creation Date  : Avril 2015                                           *
+ * Creation Date  : Avril 2015                                               *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe a Modular cylindrical CsI Scintillator           *
- *   Few Material are instantiate and user can choose position and dimension    *
+ *  This class describe a Modular cylindrical CsI Scintillator               *
+ *   Few Material are instantiate and user can choose position and dimension *
  *  but also the adding of a lead plate on the rear side of the detector     *
  *                                                                           *
  *---------------------------------------------------------------------------*
@@ -47,7 +47,7 @@
 #include "ObsoleteGeneralScorers.hh"
 #include "RootOutput.h"
 #include "MaterialManager.hh"
-#include "SiliconScorers.hh"
+#include "InteractionScorers.hh"
 #include "PhotoDiodeScorers.hh"
 #include "CalorimeterScorers.hh"
 #include "NPSDetectorFactory.hh"
@@ -453,29 +453,15 @@ void CsI::ReadSensitive(const G4Event* event){
     m_Event->Clear();
     
     // CsI //
-    NPS::HitsMap<G4double*>* CsIHitMap;
-    std::map<G4int, G4double**>::iterator CsI_itr;
-    G4int CsICollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorer/CsI");
-    CsIHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CsICollectionID));
-    
-    // Loop on the CsI map
-    for (CsI_itr = CsIHitMap->GetMap()->begin() ; CsI_itr != CsIHitMap->GetMap()->end() ; CsI_itr++){
-        G4double* Info = *(CsI_itr->second);
-        double E_CsI = RandGauss::shoot(Info[0],Info[0]*ResoCsI/100);
-        //cout << "Energy CsI " << endl;
-        //cout << E_CsI << endl;
+    CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_CsIScorer->GetPrimitive(0);
+
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
+        vector<unsigned int> level = Scorer->GetLevel(i); 
+        double E_CsI = RandGauss::shoot(Scorer->GetEnergy(i),Scorer->GetEnergy(i)*ResoCsI/100);
         m_Event->SetCsIEEnergy(E_CsI);
-        m_Event->SetENumber(Info[7]);
-        
-        
-        ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-        ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-        ms_InterCoord->SetDetectedPositionZ(Info[4]) ;
-        ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-        ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
+        m_Event->SetENumber(level[i]);
     }
-    // Clear Map for next event
-    CsIHitMap->clear();
     
     // PhotoDiode //
     NPS::HitsMap<G4double*>* PhotoDiodeHitMap;
@@ -517,9 +503,14 @@ void CsI::InitializeScorers() {
     
     if(already_exist) return ;
     
-    G4VPrimitiveScorer* CsIScorer= new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("CsI",NestingLevel);
+    G4VPrimitiveScorer* CsIScorer= new CalorimeterScorers::PS_Calorimeter("CsI",NestingLevel);
     m_CsIScorer->RegisterPrimitive(CsIScorer);
     
+    
+    G4VPrimitiveScorer* Interaction= new InteractionScorers::PS_Interactions("InteractionCsI",ms_InterCoord,1);
+    m_CsIScorer->RegisterPrimitive(Interaction);
+    
+
     G4VPrimitiveScorer* PDScorer = new PHOTODIODESCORERS::PS_PhotoDiode_Rectangle("PhotoDiode",0,
                                                                                   PhotoDiodeFace,
                                                                                   PhotoDiodeFace,
@@ -530,19 +521,6 @@ void CsI::InitializeScorers() {
     G4SDManager::GetSDMpointer()->AddNewDetector(m_PDScorer) ;
     G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIScorer) ;
     
-    
-    /*G4VPrimitiveScorer* DetNbr = new PSDetectorNumber("CsINumber","CsI", 0) ;
-     G4VPrimitiveScorer* Energy = new PSEnergy("Energy","CsI", 0)                   ;
-     G4VPrimitiveScorer* Time   = new PSTOF("Time","CsI", 0)                         ;
-     G4VPrimitiveScorer* InteractionCoordinatesZ  			= new OBSOLETEGENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","CsI", 0);
-     //and register it to the multifunctionnal detector
-     m_CsIScorer->RegisterPrimitive(DetNbr)                         ;
-     m_CsIScorer->RegisterPrimitive(Energy)                         ;
-     m_CsIScorer->RegisterPrimitive(Time)                            ;
-     m_CsIScorer->RegisterPrimitive(InteractionCoordinatesZ);
-     G4SDManager::GetSDMpointer()->AddNewDetector(m_CsIScorer) ;
-     G4SDManager::GetSDMpointer()->AddNewDetector(m_PDScorer) ;*/
-    
 }
 ////////////////////////////////////////////////////////////////
 
diff --git a/NPSimulation/Detectors/FPDTamu/FPDTamu.cc b/NPSimulation/Detectors/FPDTamu/FPDTamu.cc
index fde2a8b7d45c31c3f6cda1be0209e34be1b818f3..ac21c42c6f558556e94e9dca60e13c2a278f56f0 100644
--- a/NPSimulation/Detectors/FPDTamu/FPDTamu.cc
+++ b/NPSimulation/Detectors/FPDTamu/FPDTamu.cc
@@ -183,33 +183,21 @@ void FPDTamu::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void FPDTamu::ReadSensitive(const G4Event* event){
+void FPDTamu::ReadSensitive(const G4Event*){
   m_Event->Clear();
 
-  ///////////
-  // Calorimeter scorer
-  NPS::HitsMap<G4double*>* CaloHitMap;
-  std::map<G4int, G4double**>::iterator Calo_itr;
+ CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_FPDTamuScorer->GetPrimitive(0);
 
-  G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FPDTamuScorer/Calorimeter");
-  CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-
-  // Loop on the Calo map
-  for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-
-    G4double* Info = *(Calo_itr->second);
-    //(Info[0]/2.35)*((Info[0]*1.02)*pow((Info[0]*1.8),.5))
-    // double Energy = RandGauss::shoot(Info[0],((Info[0]*1000*1.02/2.35)*pow((Info[0]*1000*1.8),.5)) );
-    double Energy = RandGauss::shoot(Info[0],FPDTamu_NS::ResoEnergy);
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),FPDTamu_NS::ResoEnergy);
     if(Energy>FPDTamu_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Info[1],FPDTamu_NS::ResoTime);
-      int DetectorNbr = (int) Info[2];
+      double Time = RandGauss::shoot(Scorer->GetTime(i),FPDTamu_NS::ResoTime);
+      int DetectorNbr = Scorer->GetLevel(i)[0];
       m_Event->Set_Delta_E(DetectorNbr,Energy);
       m_Event->Set_Delta_T(DetectorNbr,Time); 
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -224,7 +212,7 @@ void FPDTamu::InitializeScorers() {
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_Calorimeter("Calorimeter",level, 0) ;
+  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
   //and register it to the multifunctionnal detector
   m_FPDTamuScorer->RegisterPrimitive(Calorimeter);
   G4SDManager::GetSDMpointer()->AddNewDetector(m_FPDTamuScorer) ;
diff --git a/NPSimulation/Detectors/Fatima/Fatima.cc b/NPSimulation/Detectors/Fatima/Fatima.cc
index 66ef3a37aba94f0e26790ef419b39aeaf9a0a348..dffd966af2018feb25db7020dafee25ec6f97ef4 100644
--- a/NPSimulation/Detectors/Fatima/Fatima.cc
+++ b/NPSimulation/Detectors/Fatima/Fatima.cc
@@ -167,7 +167,7 @@ void Fatima::ConstructDetector(G4LogicalVolume* world){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4LogicalVolume* Fatima::ConstructDetector(){
   if(!m_LogicalDetector){
-    
+
     G4Material* Vacuum = MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum");
     G4Material* Alu = MaterialManager::getInstance()->GetMaterialFromLibrary("Al");
     G4Material* Lead = MaterialManager::getInstance()->GetMaterialFromLibrary("Pb");
@@ -304,41 +304,32 @@ void Fatima::InitializeRootOutput(){
   if(!pTree->FindBranch("Fatima")){
     pTree->Branch("Fatima", "TFatimaData", &m_Event) ;
   } 
- pTree->SetBranchAddress("Fatima", &m_Event) ;
+  pTree->SetBranchAddress("Fatima", &m_Event) ;
 }
 
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Fatima::ReadSensitive(const G4Event* event){
+void Fatima::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // LaBr3
-  NPS::HitsMap<G4double*>* LaBr3HitMap;
-  std::map<G4int, G4double**>::iterator LaBr3_itr;
-
-  G4int LaBr3CollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Fatima_LaBr3Scorer/FatimaLaBr3");
-  LaBr3HitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(LaBr3CollectionID));
-
-  // Loop on the LaBr3 map
-  for (LaBr3_itr = LaBr3HitMap->GetMap()->begin() ; LaBr3_itr != LaBr3HitMap->GetMap()->end() ; LaBr3_itr++){
-
-    G4double* Info = *(LaBr3_itr->second);
-
-    double Energy = RandGauss::shoot(Info[0], EnergyResolution);
+  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_LaBr3Scorer->GetPrimitive(0);
+  unsigned int size = Scorer->GetMult(); 
+  for(unsigned int i = 0 ; i < size ; i++){
+    vector<unsigned int> level = Scorer->GetLevel(i); 
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i), EnergyResolution);
 
     if(Energy>EnergyThreshold){
-      double Time = Info[1];
-      int DetectorNbr = (int) Info[2];
+      double Time = Scorer->GetTime(i);
+      int DetectorNbr = level[0];
 
       m_Event->SetFatimaLaBr3E(DetectorNbr,Energy);
       m_Event->SetFatimaLaBr3T(DetectorNbr,Time);
     }
   }
-  // clear map for next event
-  LaBr3HitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -354,7 +345,7 @@ void Fatima::InitializeScorers(){
   if(already_exist) return;
 
   G4VPrimitiveScorer* LaBr3Scorer =
-    new  CALORIMETERSCORERS::PS_Calorimeter("FatimaLaBr3",NestingLevel);
+    new  CalorimeterScorers::PS_Calorimeter("FatimaLaBr3",NestingLevel);
   //and register it to the multifunctionnal detector
   m_LaBr3Scorer->RegisterPrimitive(LaBr3Scorer);
 
@@ -362,24 +353,24 @@ void Fatima::InitializeScorers(){
   G4SDManager::GetSDMpointer()->AddNewDetector(m_LaBr3Scorer) ;
 }
 
- ////////////////////////////////////////////////////////////////////////////////
- //            Construct Method to be pass to the DetectorFactory              //
- ////////////////////////////////////////////////////////////////////////////////
- NPS::VDetector* Fatima::Construct(){
+////////////////////////////////////////////////////////////////////////////////
+//            Construct Method to be pass to the DetectorFactory              //
+////////////////////////////////////////////////////////////////////////////////
+NPS::VDetector* Fatima::Construct(){
   return  (NPS::VDetector*) new Fatima();
- }
-
- ////////////////////////////////////////////////////////////////////////////////
- //            Registering the construct method to the factory                 //
- ////////////////////////////////////////////////////////////////////////////////
- extern"C" {
- class proxy_nps_fatima{
-   public:
-    proxy_nps_fatima(){
-      NPS::DetectorFactory::getInstance()->AddToken("Fatima","Fatima");
-      NPS::DetectorFactory::getInstance()->AddDetector("Fatima",Fatima::Construct);
-    }
-};
+}
 
- proxy_nps_fatima p_nps_fatima;
- }
+////////////////////////////////////////////////////////////////////////////////
+//            Registering the construct method to the factory                 //
+////////////////////////////////////////////////////////////////////////////////
+extern"C" {
+  class proxy_nps_fatima{
+    public:
+      proxy_nps_fatima(){
+        NPS::DetectorFactory::getInstance()->AddToken("Fatima","Fatima");
+        NPS::DetectorFactory::getInstance()->AddDetector("Fatima",Fatima::Construct);
+      }
+  };
+
+  proxy_nps_fatima p_nps_fatima;
+}
diff --git a/NPSimulation/Detectors/Foil/Foil.cc b/NPSimulation/Detectors/Foil/Foil.cc
index 85c1126f901c8a3c16798d6cd669db426bb4138e..520e3ce8a66ed3202ec5bb5bab4bb792d714ecb4 100644
--- a/NPSimulation/Detectors/Foil/Foil.cc
+++ b/NPSimulation/Detectors/Foil/Foil.cc
@@ -269,31 +269,22 @@ void Foil::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Foil::ReadSensitive(const G4Event* event){
+void Foil::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // Calorimeter scorer
-  NPS::HitsMap<double*>* CaloHitMap;
-  std::map<G4int, double**>::iterator Calo_itr;
-
-  G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FoilScorer/Calorimeter");
-  CaloHitMap = (NPS::HitsMap<double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-
-  // Loop on the Calo map
-  for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-
-    double* Info = *(Calo_itr->second);
-    double Energy = RandGauss::shoot(Info[0],Foil_NS::ResoEnergy);
+  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_FoilScorer->GetPrimitive(0);
+  unsigned int size = Scorer->GetMult(); 
+  for(unsigned int i = 0 ; i < size ; i++){
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Foil_NS::ResoEnergy);
     if(Energy>Foil_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Info[1],Foil_NS::ResoTime);
-      int DetectorNbr = (int) Info[2];
+      double Time = RandGauss::shoot(Scorer->GetTime(i),Foil_NS::ResoTime);
+      int DetectorNbr = Scorer->GetLevel(i)[0];
       m_Event->SetEnergy(DetectorNbr,Energy);
       m_Event->SetTime(DetectorNbr,Time); 
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -308,7 +299,7 @@ void Foil::InitializeScorers() {
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_Calorimeter("Calorimeter",level, 0) ;
+  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
   //and register it to the multifunctionnal detector
   m_FoilScorer->RegisterPrimitive(Calorimeter);
   G4SDManager::GetSDMpointer()->AddNewDetector(m_FoilScorer) ;
diff --git a/NPSimulation/Detectors/ForwardArray/ForwardArray.cc b/NPSimulation/Detectors/ForwardArray/ForwardArray.cc
index 71385a978517517895c473667e28b38887d53430..350072e606f2de7dbd5db052f8e432ca994af7a2 100644
--- a/NPSimulation/Detectors/ForwardArray/ForwardArray.cc
+++ b/NPSimulation/Detectors/ForwardArray/ForwardArray.cc
@@ -287,37 +287,22 @@ void ForwardArray::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void ForwardArray::ReadSensitive(const G4Event* event){
+void ForwardArray::ReadSensitive(const G4Event*){
     m_Event->Clear();
     
     ///////////
-    // Calorimeter scorer
-    NPS::HitsMap<G4double*>* CaloHitMap;
-    std::map<G4int, G4double**>::iterator Calo_itr;
-    
-    G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ForwardArrayScorer/Calorimeter");
-    CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-    
-    // Loop on the Calo map
-    for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-        
-        G4double* Info = *(Calo_itr->second);
-        double Energy = RandGauss::shoot(Info[0],ForwardArray_NS::ResoEnergy);
+    CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_ForwardArrayScorer->GetPrimitive(0);
+
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
+        double Energy = RandGauss::shoot(Scorer->GetEnergy(i),ForwardArray_NS::ResoEnergy);
         if(Energy>ForwardArray_NS::EnergyThreshold){
-            double Time = RandGauss::shoot(Info[1],ForwardArray_NS::ResoTime);
-            int DetectorNbr = (int) Info[7];
+            double Time = RandGauss::shoot(Scorer->GetTime(i),ForwardArray_NS::ResoTime);
+            int DetectorNbr = Scorer->GetLevel(i)[0];
             m_Event->SetEnergy(DetectorNbr,Energy);
             m_Event->SetTime(DetectorNbr,Time);
-            
-            ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-            ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-            ms_InterCoord->SetDetectedPositionZ(Info[4]) ;
-            ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-            ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
         }
     }
-    // clear map for next event
-    CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -332,7 +317,7 @@ void ForwardArray::InitializeScorers() {
     
     // Otherwise the scorer is initialised
     vector<int> level; level.push_back(0);
-    G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("Calorimeter",level, 0) ;
+    G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
     //and register it to the multifunctionnal detector
     m_ForwardArrayScorer->RegisterPrimitive(Calorimeter);
     G4SDManager::GetSDMpointer()->AddNewDetector(m_ForwardArrayScorer) ;
diff --git a/NPSimulation/Detectors/Helios2/Helios2.cc b/NPSimulation/Detectors/Helios2/Helios2.cc
index c2e5f35b0faadae524726ae11441ed8023506dbe..aa2558c62d355add0ce918604f1ec05448417cc1 100644
--- a/NPSimulation/Detectors/Helios2/Helios2.cc
+++ b/NPSimulation/Detectors/Helios2/Helios2.cc
@@ -47,7 +47,8 @@
 
 // NPTool header
 #include "Helios2.hh"
-#include "SiliconScorers.hh"
+#include "DSSDScorers.hh"
+#include "InteractionScorers.hh"
 #include "RootOutput.h"
 #include "MaterialManager.hh"
 #include "NPSDetectorFactory.hh"
@@ -117,9 +118,9 @@ G4LogicalVolume* Helios2::BuildSquareTube(){
         Helios2_NS::SquareTubeSide*0.5,0.5*(Helios2_NS::SquareTubeExcess+Helios2_NS::WaferLength));
 
     G4Tubs* tubs = new G4Tubs("Helios2_Box",0,Helios2_NS::SquareTubeRadius,
-                  (Helios2_NS::SquareTubeExcess+Helios2_NS::WaferLength),0,360*deg);
- 
- 
+        (Helios2_NS::SquareTubeExcess+Helios2_NS::WaferLength),0,360*deg);
+
+
     G4RotationMatrix* R = new G4RotationMatrix();
     G4ThreeVector P(0,0,0);  
     G4SubtractionSolid* sub = new G4SubtractionSolid("Helios2_Sub",box,tubs,R,P);
@@ -149,15 +150,15 @@ G4LogicalVolume* Helios2::BuildSiliconWafer(){
     G4ThreeVector AWPos(0,0,0);
     G4RotationMatrix* AWRot = new G4RotationMatrix();
     new G4PVPlacement(G4Transform3D(*AWRot,AWPos),m_ActiveWafer,
-                      "Helios2_ActiveWafer",m_SiliconWafer, true, 0);
+        "Helios2_ActiveWafer",m_SiliconWafer, true, 0);
     m_ActiveWafer->SetSensitiveDetector(m_Helios2Scorer);
 
     m_SiliconWafer->SetVisAttributes(m_VisPassiveSilicon);
     m_ActiveWafer->SetVisAttributes(m_VisSilicon);
- 
-    }
 
-  
+  }
+
+
   return m_SiliconWafer;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -165,20 +166,20 @@ G4LogicalVolume* Helios2::BuildMagnet(){
   if(!m_Magnet){
     G4Tubs* tubs1 = new G4Tubs("Helios2_MainFull",0,
         Helios2_NS::MagnetOutterRadius,Helios2_NS::MagnetLength*0.5,0,360*deg);
-  
+
     // Inner part of the Soleinoid minus the Target it self (placed in the world)
     G4SubtractionSolid* tubs = new G4SubtractionSolid("Helios_Main",
-                                tubs1, Target::GetTarget()->GetTargetSolid(), new G4RotationMatrix() ,Target::GetTarget()->GetTargetPosition());
+        tubs1, Target::GetTarget()->GetTargetSolid(), new G4RotationMatrix() ,Target::GetTarget()->GetTargetPosition());
 
     G4Tubs* tubs2 = new G4Tubs("Helios2_Mag",Helios2_NS::MagnetInnerRadius,
         Helios2_NS::MagnetOutterRadius,Helios2_NS::MagnetLength*0.5,0,360*deg);
 
     G4Material* Fe= MaterialManager::getInstance()->GetMaterialFromLibrary("Fe");
     G4Material* Vc= MaterialManager::getInstance()->GetMaterialFromLibrary("Vacuum");
-  
+
     m_Magnet= new G4LogicalVolume(tubs,Vc,"logic_Helios2_Main",0,0,0);
     G4LogicalVolume* Mag = new G4LogicalVolume(tubs2,Fe,"logic_Helios2_Magnet",0,0,0);
-    
+
     Mag->SetVisAttributes(m_VisMagnet);
     m_Magnet->SetVisAttributes(G4VisAttributes::Invisible);
     // Place the Solenoid
@@ -188,7 +189,7 @@ G4LogicalVolume* Helios2::BuildMagnet(){
     new G4PVPlacement(G4Transform3D(*MagRot,MagPos),
         Mag,
         "Helios2_Magnet",m_Magnet,false,0);
-  
+
   }
   return m_Magnet;
 }
@@ -252,7 +253,7 @@ void Helios2::ConstructDetector(G4LogicalVolume* world){
   fieldMgr->SetMinimumEpsilonStep( 1*mm);
   fieldMgr->SetMaximumEpsilonStep( 10*m );
   fieldMgr->SetDeltaOneStep( 1 * mm ); 
-  
+
   // Place detectors and support inside it
   for (unsigned short i = 0 ; i < m_Z.size() ; i++) {
     G4ThreeVector DetPos;
@@ -316,50 +317,44 @@ void Helios2::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Helios2::ReadSensitive(const G4Event* event){
-    m_Event->Clear();
+void Helios2::ReadSensitive(const G4Event* ){
+  m_Event->Clear();
 
   ///////////
   // Resistiverimeter scorer
-  NPS::HitsMap<G4double*>* ResistiveHitMap;
-  std::map<G4int, G4double**>::iterator Resistive_itr;
-
-  G4int ResistiveCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Helios2Scorer/Resistive");
-  ResistiveHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(ResistiveCollectionID));
-
-  // Loop on the Resistive map
-  for (Resistive_itr = ResistiveHitMap->GetMap()->begin() ; Resistive_itr != ResistiveHitMap->GetMap()->end() ; Resistive_itr++){
-  G4double* Info = *(Resistive_itr->second);
-  double EBack = RandGauss::shoot(Info[0]+Info[1],Helios2_NS::ResoEnergyBack);
-  double TBack = RandGauss::shoot(Info[2],Helios2_NS::ResoTime);
-  double EUp = RandGauss::shoot(Info[1],Helios2_NS::ResoEnergyFront);
-  double TUp = RandGauss::shoot(Info[2],Helios2_NS::ResoTime);
-  double EDw = RandGauss::shoot(Info[0],Helios2_NS::ResoEnergyFront);
-  double TDw = RandGauss::shoot(Info[2],Helios2_NS::ResoTime);
-
-  if(EBack>Helios2_NS::EnergyThreshold){
-    m_Event->SetEBack(Info[3],EBack);
-    m_Event->SetTBack(Info[3],TBack);  
-  }
-
-  if(EUp>Helios2_NS::EnergyThreshold){
-    m_Event->SetEUp(Info[3],EUp);
-    m_Event->SetTUp(Info[3],TUp);  
-  }
-
-  if(EUp>Helios2_NS::EnergyThreshold){
-    m_Event->SetEUp(Info[3],EUp);
-    m_Event->SetTUp(Info[3],TUp);  
+  DSSDScorers::PS_Resistive* Scorer= (DSSDScorers::PS_Resistive*) m_Helios2Scorer->GetPrimitive(0);
+  
+  // Loop on the Back
+  unsigned int sizeBack = Scorer->GetBackMult();
+  for(unsigned int i = 0 ; i < sizeBack ; i++){
+    double EBack = RandGauss::shoot(Scorer->GetEnergyBack(i),Helios2_NS::ResoEnergyBack);
+    double TBack = RandGauss::shoot(Scorer->GetTimeBack(i),Helios2_NS::ResoTime);
+    if(EBack>Helios2_NS::EnergyThreshold){
+      m_Event->SetEBack(Scorer->GetDetectorBack(i),EBack);
+      m_Event->SetTBack(Scorer->GetDetectorBack(i),TBack);  
+    }
   }
-
-  if(EDw>Helios2_NS::EnergyThreshold){
-    m_Event->SetEDw(Info[3],EDw);
-    m_Event->SetTDw(Info[3],TDw);  
+  // Loop on the Up 
+  unsigned int sizeUp = Scorer->GetUpMult();
+  for(unsigned int i = 0 ; i < sizeUp ; i++){
+    double EUp = RandGauss::shoot(Scorer->GetEnergyUp(i),Helios2_NS::ResoEnergyFront);
+    double TUp = RandGauss::shoot(Scorer->GetTimeUp(i),Helios2_NS::ResoTime);
+    if(EUp>Helios2_NS::EnergyThreshold){
+      m_Event->SetEUp(Scorer->GetDetectorUp(i),EUp);
+      m_Event->SetTUp(Scorer->GetDetectorUp(i),TUp);  
+    }
   }
-
+  
+  // Loop on the Down 
+  unsigned int sizeDown = Scorer->GetDownMult();
+  for(unsigned int i = 0 ; i < sizeDown ; i++){
+    double EDw = RandGauss::shoot(Scorer->GetEnergyDown(i),Helios2_NS::ResoEnergyFront);
+    double TDw = RandGauss::shoot(Scorer->GetTimeDown(i),Helios2_NS::ResoTime);
+    if(EDw>Helios2_NS::EnergyThreshold){
+      m_Event->SetEDw(Scorer->GetDetectorDown(i),EDw);
+      m_Event->SetTDw(Scorer->GetDetectorDown(i),TDw);  
+    }
   }
-  // clear map for next event
-  ResistiveHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -373,9 +368,12 @@ void Helios2::InitializeScorers() {
     return ;
 
   // Otherwise the scorer is initialised
-  G4VPrimitiveScorer* Resistive= new SILICONSCORERS::PS_Silicon_Resistive("Resistive",1,Helios2_NS::WaferLength,Helios2_NS::WaferWidth,1) ;
+  G4VPrimitiveScorer* Resistive= new DSSDScorers::PS_Resistive("Resistive",1,Helios2_NS::WaferLength,Helios2_NS::WaferWidth,1) ;
   //and register it to the multifunctionnal detector
   m_Helios2Scorer->RegisterPrimitive(Resistive);
+  G4VPrimitiveScorer* Inter = new InteractionScorers::PS_Interactions("Resistive",ms_InterCoord,1) ; 
+  m_Helios2Scorer->RegisterPrimitive(Inter);
+
   G4SDManager::GetSDMpointer()->AddNewDetector(m_Helios2Scorer) ;
 }
 
diff --git a/NPSimulation/Detectors/Hira/Hira.cc b/NPSimulation/Detectors/Hira/Hira.cc
index 86646704d35c621f19b4eb0039d5f8e2af37e0c5..b68c39c58e45874bd02e8c5ddf49cae5c70bc41b 100644
--- a/NPSimulation/Detectors/Hira/Hira.cc
+++ b/NPSimulation/Detectors/Hira/Hira.cc
@@ -229,25 +229,18 @@ void Hira::ReadSensitive(const G4Event* event){
     
     // CsI //
     if(m_build_CsI){
-        NPS::HitsMap<G4double*>* CsIHitMap;
-        std::map<G4int, G4double**>::iterator CsI_itr;
-        G4int CsICollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Hira_CsIScorer/CsI");
-        CsIHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CsICollectionID));
-        
-        // Loop on the CsI map
-        for (CsI_itr = CsIHitMap->GetMap()->begin() ; CsI_itr != CsIHitMap->GetMap()->end() ; CsI_itr++){
-            G4double* Info = *(CsI_itr->second);
-            double E_CsI = RandGauss::shoot(Info[0],ResoCsI);
+    CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_CsIScorer->GetPrimitive(0);
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
+        vector<unsigned int> level = Scorer->GetLevel(i); 
+            double E_CsI = RandGauss::shoot(Scorer->GetEnergy(i),ResoCsI);
             if(E_CsI>EnergyThreshold){
                 m_EventHira->SetHiraCsIEEnergy(E_CsI);
-                m_EventHira->SetHiraCsIEDetectorNbr((int)Info[3]-1);
-                m_EventHira->SetHiraCsIECristalNbr((int)Info[2]-1);
+                m_EventHira->SetHiraCsIEDetectorNbr(level[0]-1);
+                m_EventHira->SetHiraCsIECristalNbr(level[1]-1);
             }
         }
-        // Clear Map for next event
-        CsIHitMap->clear();
     }
-    
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -281,7 +274,7 @@ void Hira::InitializeScorers(){
     
     m_ThickSiStripScorer->RegisterPrimitive(ThickSiScorer);
     
-    G4VPrimitiveScorer* CsIScorer= new CALORIMETERSCORERS::PS_Calorimeter("CsI",NestingLevel);
+    G4VPrimitiveScorer* CsIScorer= new CalorimeterScorers::PS_Calorimeter("CsI",NestingLevel);
     
     m_CsIScorer->RegisterPrimitive(CsIScorer);
     
diff --git a/NPSimulation/Detectors/Lassa/Lassa.cc b/NPSimulation/Detectors/Lassa/Lassa.cc
index 0476de1e1e617ba54796298c6e44d3ff74f879ff..857e4f02fac8937047dae1655e1b5dfb0f0e0621 100644
--- a/NPSimulation/Detectors/Lassa/Lassa.cc
+++ b/NPSimulation/Detectors/Lassa/Lassa.cc
@@ -181,25 +181,18 @@ void Lassa::ReadSensitive(const G4Event* event){
     // Clear Map for next event
     ThickSiHitMap->clear();
     
-    // CsI //
-    NPS::HitsMap<G4double*>* CsIHitMap;
-    std::map<G4int, G4double**>::iterator CsI_itr;
-    G4int CsICollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Lassa_CsIScorer/CsI");
-    CsIHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CsICollectionID));
-    
-    // Loop on the CsI map
-    for (CsI_itr = CsIHitMap->GetMap()->begin() ; CsI_itr != CsIHitMap->GetMap()->end() ; CsI_itr++){
-        G4double* Info = *(CsI_itr->second);
-        double E_CsI = RandGauss::shoot(Info[0],ResoCsI);
-        if(E_CsI>EnergyThreshold){
-            m_EventLassa->SetLassaCsIEEnergy(E_CsI);
-            m_EventLassa->SetLassaCsIEDetectorNbr((int)Info[3]-1);
-            m_EventLassa->SetLassaCsIECristalNbr((int)Info[2]-1);
+   CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_CsIScorer->GetPrimitive(0);
+
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
+     vector<unsigned int> level = Scorer->GetLevel(i); 
+     double E_CsI = RandGauss::shoot(Scorer->GetEnergy(i),ResoCsI);
+     if(E_CsI>EnergyThreshold){
+        m_EventLassa->SetLassaCsIEEnergy(E_CsI);
+        m_EventLassa->SetLassaCsIEDetectorNbr(level[0]-1);
+        m_EventLassa->SetLassaCsIECristalNbr(level[1]-1);
         }
     }
-    // Clear Map for next event
-    CsIHitMap->clear();
-    
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -224,7 +217,7 @@ void Lassa::InitializeScorers(){
     
     m_ThickSiStripScorer->RegisterPrimitive(ThickSiScorer);
     
-    G4VPrimitiveScorer* CsIScorer= new CALORIMETERSCORERS::PS_Calorimeter("CsI",NestingLevel);
+    G4VPrimitiveScorer* CsIScorer= new CalorimeterScorers::PS_Calorimeter("CsI",NestingLevel);
     
     m_CsIScorer->RegisterPrimitive(CsIScorer);
     
diff --git a/NPSimulation/Detectors/LightPipe/LightPipe.cc b/NPSimulation/Detectors/LightPipe/LightPipe.cc
index 53095a081604186e4cd2d55bf38e6a9459f4caef..b058407638661d993828feee4cfce10e38fc4aac 100644
--- a/NPSimulation/Detectors/LightPipe/LightPipe.cc
+++ b/NPSimulation/Detectors/LightPipe/LightPipe.cc
@@ -1,18 +1,18 @@
 /*****************************************************************************
- * Copyright (C) 2009-2018   this file is part of the NPTool Project       *
+ * Copyright (C) 2009-2018   this file is part of the NPTool Project         *
  *                                                                           *
  * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
  * For the list of contributors see $NPTOOL/Licence/Contributors             *
  *****************************************************************************/
 
 /*****************************************************************************
- * Original Author: Greg Christian  contact address: gchristian@tamu.edu                        *
+ * Original Author: Greg Christian  contact address: gchristian@tamu.edu     *
  *                                                                           *
- * Creation Date  : July 2018                                           *
+ * Creation Date  : July 2018                                                *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe  LightPipe simulation                             *
+ *  This class describe  LightPipe simulation                                *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -224,31 +224,23 @@ void LightPipe::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void LightPipe::ReadSensitive(const G4Event* event){
+void LightPipe::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // Calorimeter scorer
-  NPS::HitsMap<G4double*>* CaloHitMap;
-  std::map<G4int, G4double**>::iterator Calo_itr;
+  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_LightPipeScorer->GetPrimitive(0);
 
-  G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("LightPipeScorer/Calorimeter");
-  CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-
-  // Loop on the Calo map
-  for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-
-    G4double* Info = *(Calo_itr->second);
-    double Energy = RandGauss::shoot(Info[0],LightPipe_NS::ResoEnergy);
+  unsigned int size = Scorer->GetMult(); 
+  for(unsigned int i = 0 ; i < size ; i++){
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),LightPipe_NS::ResoEnergy);
     if(Energy>LightPipe_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Info[1],LightPipe_NS::ResoTime);
-      int DetectorNbr = (int) Info[2];
+      double Time = RandGauss::shoot(Scorer->GetTime(i),LightPipe_NS::ResoTime);
+      int DetectorNbr = Scorer->GetLevel(i)[0];
       m_Event->SetEnergy(DetectorNbr,Energy);
       m_Event->SetTime(DetectorNbr,Time); 
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -263,7 +255,7 @@ void LightPipe::InitializeScorers() {
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(0);
-  G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_Calorimeter("Calorimeter",level, 0) ;
+  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
   //and register it to the multifunctionnal detector
   m_LightPipeScorer->RegisterPrimitive(Calorimeter);
   G4SDManager::GetSDMpointer()->AddNewDetector(m_LightPipeScorer) ;
diff --git a/NPSimulation/Detectors/MUST2/MUST2Array.cc b/NPSimulation/Detectors/MUST2/MUST2Array.cc
index 950046182d705c9fb0bafc476bf1046bda5d1340..1fd12b6eb100b5c2f43280aefc162da4e5e3aeaa 100644
--- a/NPSimulation/Detectors/MUST2/MUST2Array.cc
+++ b/NPSimulation/Detectors/MUST2/MUST2Array.cc
@@ -41,7 +41,8 @@
 // NPS
 #include "MaterialManager.hh"
 #include "NPSDetectorFactory.hh"
-#include "SiliconScorers.hh"
+#include "InteractionScorers.hh"
+#include "DSSDScorers.hh"
 #include "CalorimeterScorers.hh"
 #include "NPOptionManager.h"
 // NPL
@@ -717,7 +718,7 @@ void MUST2Array::InitializeRootOutput(){
 
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void MUST2Array::ReadSensitive(const G4Event* event){
+void MUST2Array::ReadSensitive(const G4Event*){
   G4String DetectorNumber;
   m_Event->Clear();
 
@@ -727,33 +728,25 @@ void MUST2Array::ReadSensitive(const G4Event* event){
 
   /////////////////////
   // Read the Scorer associate to the Silicon Strip
-  SILICONSCORERS::PS_Silicon_Images* SiScorer = (SILICONSCORERS::PS_Silicon_Images*) m_StripScorer->GetPrimitive(0);
-        
+  DSSDScorers::PS_Images* SiScorer = (DSSDScorers::PS_Images*) m_StripScorer->GetPrimitive(0);
+
   bool SiScoredHit; // flag true if first stage scores a hit above threshold 
   set<int> trig; // list of telescope that got a Si trigger
-  vector<unsigned int> indexes = SiScorer->GetIndexes();
-  unsigned int size = indexes.size();
-  
-  for(unsigned int i = 0 ;i<size;i++){
-    SiScoredHit= false;
-    unsigned int index = indexes[i];
-    double energy = SiScorer->GetEnergy(index);
+  unsigned int sizeFront = SiScorer->GetFrontMult();
+  unsigned int sizeBack  = SiScorer->GetBackMult();
+
+  for(unsigned int i = 0 ; i < sizeFront ; i++){
+    double energy  = SiScorer->GetEnergyFront(i);
     double energyX = RandGauss::shoot(energy, ResoStrip);
-    double energyY= RandGauss::shoot(energy, ResoStrip);
-    int detectorNbr = SiScorer->GetDetectorNbr(index); 
-    double time = SiScorer->GetTime(index);
-    double InterPos_X = SiScorer->GetX(index) ;
-    double InterPos_Y = SiScorer->GetY(index) ;
-    double InterPos_Z = SiScorer->GetZ(index) ;
-    double InterPos_Theta = SiScorer->GetTheta(index) ;
-    double InterPos_Phi = SiScorer->GetPhi(index) ;
+    int detectorNbr = SiScorer->GetDetectorFront(i); 
+    double time = SiScorer->GetTimeFront(i);
     // X
     if(energyX>0.1*keV){ // above threshold
       SiScoredHit=true;
       // Pixel value at interaction point
       unsigned int a,r,g,b;
       //  pixel
-      SiScorer->GetARGBFront(indexes[i],a,r,g,b);
+      SiScorer->GetARGBFront(i,a,r,g,b);
       b=b+2;
       g=g+2;
       if(r==0){
@@ -786,18 +779,26 @@ void MUST2Array::ReadSensitive(const G4Event* event){
             m_Event->SetStripXE(detectorNbr,g+1,NPL::EnergyToADC(energyX,0,63,8192,16384)) ;  
             // Time 
             double timeX = TimeOffset - RandGauss::shoot(time, ResoTimeMust);
-            m_Event->SetStripXT(detectorNbr,b+1,NPL::EnergyToADC(timeX,0,1000,8192,16384));
-           }
+            m_Event->SetStripXT(detectorNbr,g+1,NPL::EnergyToADC(timeX,0,1000,8192,16384));
+          }
         }
       }
     }
+  };
+
+  for(unsigned int i = 0 ; i < sizeBack ; i++){
+    double energy  = SiScorer->GetEnergyBack(i);
+    double energyY = RandGauss::shoot(energy, ResoStrip);
+    int detectorNbr = SiScorer->GetDetectorBack(i); 
+    double time = SiScorer->GetTimeBack(i);
+
     // Y
     if(energyY>0.1*keV){ // above threshold
       SiScoredHit=true;
       // Pixel value at interaction point
       unsigned int a,r,g,b;
       //  pixel
-      SiScorer->GetARGBBack(indexes[i],a,r,g,b);
+      SiScorer->GetARGBBack(i,a,r,g,b);
       b=b+2;
       g=g+2;
       if(r==0){
@@ -807,7 +808,7 @@ void MUST2Array::ReadSensitive(const G4Event* event){
         // Time 
         double timeY = TimeOffset - RandGauss::shoot(time, ResoTimeMust);
         m_Event->SetStripYT(detectorNbr,b+1,NPL::EnergyToADC(timeY,0,1000,8192,16384));
-       }      
+      }      
       else{ // Interstrip Y, keep both strip with shared energy
         double rand = G4UniformRand();
         double energyY1 = rand*energyY;
@@ -829,70 +830,39 @@ void MUST2Array::ReadSensitive(const G4Event* event){
           m_Event->SetStripYE(detectorNbr,g+1,NPL::EnergyToADC(energyY2,0,63,8192,0));  
           // Time 
           double timeY = TimeOffset - RandGauss::shoot(time, ResoTimeMust);
-          m_Event->SetStripYT(detectorNbr,b+1,NPL::EnergyToADC(timeY,0,1000,8192,16384));
+          m_Event->SetStripYT(detectorNbr,g+1,NPL::EnergyToADC(timeY,0,1000,8192,16384));
         } 
       }
     }
- 
-    // If event passes through first stage fill the Interaction Coordinates   
-    if (SiScoredHit){
-      //Always calculated with respect to (0,0,0)
-      ms_InterCoord->SetDetectedPositionX(InterPos_X) ;
-      ms_InterCoord->SetDetectedPositionY(InterPos_Y) ;
-      ms_InterCoord->SetDetectedPositionZ(InterPos_Z) ;
-      ms_InterCoord->SetDetectedAngleTheta(InterPos_Theta/deg) ;
-      ms_InterCoord->SetDetectedAnglePhi(InterPos_Phi/deg) ;
-    }
-    
-  }
-
-  // Si(Li)
-  NPS::HitsMap<G4double*>* SiLiHitMap;
-  std::map<G4int, G4double**>::iterator SiLi_itr;
-
-  G4int SiLiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiScorer");
-  SiLiHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(SiLiCollectionID));
-
-  // CsI
-  NPS::HitsMap<G4double*>* CsIHitMap;
-  std::map<G4int, G4double**>::iterator CsI_itr;
-
-  G4int CsICollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsIScorer");
-  CsIHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CsICollectionID));
-
-
-  // Look for SiLi data in Trigg Telescope
-  std::set<int>::iterator itr;
-  for(itr=trig.begin();itr!=trig.end();itr++){
-    for(SiLi_itr = SiLiHitMap->GetMap()->begin(); SiLi_itr!=SiLiHitMap->GetMap()->end() ; SiLi_itr++){
-      G4double* Info = *(SiLi_itr->second);
-      if(Info[7]==*itr){//matching telescope number
-        double ESiLi = RandGauss::shoot(Info[0],ResoSiLi);
-        m_Event->SetSiLiE(Info[7],Info[8],NPL::EnergyToADC(ESiLi,0,250,8192,16384));
-        double timeSiLi = RandGauss::shoot(Info[1],ResoTimeMust);
-        m_Event->SetSiLiT(Info[7],Info[8],NPL::EnergyToADC(timeSiLi,0,1000,16384,8192));
-      }
-    }
   }
 
-  // Look for CsI data in Trigg Telescope
-  for(itr=trig.begin();itr!=trig.end();itr++){
-    for(CsI_itr = CsIHitMap->GetMap()->begin(); CsI_itr!=CsIHitMap->GetMap()->end() ; CsI_itr++){
-      G4double* Info = *(CsI_itr->second);
-      
-      if(Info[7]==*itr){//matching telescope number
-        double ECsI = RandGauss::shoot(Info[0],ResoCsI);
-        m_Event->SetCsIE(Info[7],Info[8],NPL::EnergyToADC(ECsI,0,250,8192,16384));
-        double timeCsI = RandGauss::shoot(Info[1],ResoTimeMust);
-        m_Event->SetCsIT(Info[7],Info[8],NPL::EnergyToADC(timeCsI,0,1000,16384,8192));
-      }
-    }
+  // Look for 2nd and 3rd stage only if 1st stage is hit
+  if(SiScoredHit){
+    // SiLi //
+    CalorimeterScorers::PS_Calorimeter* SiLiScorer= (CalorimeterScorers::PS_Calorimeter*) m_SiLiScorer->GetPrimitive(0);
+
+    unsigned int sizeSiLi = SiLiScorer->GetMult(); 
+    for(unsigned int i = 0 ; i < sizeSiLi ; i++){
+     double ESiLi = RandGauss::shoot(SiLiScorer->GetEnergy(i),ResoSiLi);
+     vector<unsigned int> level = SiLiScorer->GetLevel(i);
+     m_Event->SetSiLiE(level[0],level[1],NPL::EnergyToADC(ESiLi,0,250,8192,16384));
+     double timeSiLi = RandGauss::shoot(SiLiScorer->GetTime(i),ResoTimeMust);
+     m_Event->SetSiLiT(level[0],level[1],NPL::EnergyToADC(timeSiLi,0,1000,16384,8192));
+
+    } 
+   
+    // CsI //
+    CalorimeterScorers::PS_Calorimeter* CsIScorer= (CalorimeterScorers::PS_Calorimeter*) m_CsIScorer->GetPrimitive(0);
+
+    unsigned int sizeCsI = CsIScorer->GetMult(); 
+    for(unsigned int i = 0 ; i < sizeCsI ; i++){
+     double ECsI = RandGauss::shoot(CsIScorer->GetEnergy(i),ResoCsI);
+     vector<unsigned int> level = CsIScorer->GetLevel(i);
+     m_Event->SetCsIE(level[0],level[1],NPL::EnergyToADC(ECsI,0,250,8192,16384));
+     double timeCsI = RandGauss::shoot(CsIScorer->GetTime(i),ResoTimeMust);
+     m_Event->SetCsIT(level[0],level[1],NPL::EnergyToADC(timeCsI,0,1000,16384,8192));
+    } 
   }
-
-  SiScorer->clear();
-  // clear map for next event
-  SiLiHitMap->clear() ;
-  CsIHitMap->clear() ;
 }
 
 
@@ -909,20 +879,27 @@ void MUST2Array::InitializeScorers() {
   if(already_exist) return; 
 
   string nptool = getenv("NPTOOL");
-  G4VPrimitiveScorer* SiScorer = new SILICONSCORERS::PS_Silicon_Images("SiScorer",nptool+"/NPLib/Detectors/MUST2/ressources/maskFront.png",nptool+"/NPLib/Detectors/MUST2/ressources/maskBack.png",0.01,0.01,0,0,0xffff0000,0);
+  G4VPrimitiveScorer* SiScorer = 
+    new DSSDScorers::PS_Images("SiScorer",nptool+"/NPLib/Detectors/MUST2/ressources/maskFront.png",nptool+"/NPLib/Detectors/MUST2/ressources/maskBack.png",0.01,0.01,0,0,0xffff0000,0);
+
+  G4VPrimitiveScorer* InterScorer = new InteractionScorers::PS_Interactions("SiScorer",ms_InterCoord,0);
+
 
   //and register it to the multifunctionnal detector
   m_StripScorer->RegisterPrimitive(SiScorer);
+  m_StripScorer->RegisterPrimitive(InterScorer);
+
+
   //	SiLi Associate Scorer
   vector<int> SiLi_nesting={3,0};
   G4VPrimitiveScorer* SiLiScorer= 
-    new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("SiLiScorer",SiLi_nesting) ;
+    new CalorimeterScorers::PS_Calorimeter("SiLiScorer",SiLi_nesting) ;
   m_SiLiScorer->RegisterPrimitive(SiLiScorer);
 
   //	CsI Associate Scorer 
   vector<int> CsI_nesting = {2,0};
   G4VPrimitiveScorer* CsIScorer= 
-    new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("CsIScorer",CsI_nesting, 0) 	;
+    new CalorimeterScorers::PS_Calorimeter("CsIScorer",CsI_nesting, 0) 	;
   m_CsIScorer->RegisterPrimitive(CsIScorer) ;
 
   //	Add All Scorer to the Global Scorer Manager
diff --git a/NPSimulation/Detectors/Microball/Microball.cc b/NPSimulation/Detectors/Microball/Microball.cc
index 8eebc2de8066c877e1d11f42f4ee541cb853d903..1546d848e524c1783e1550f353c4a7395e71b858 100644
--- a/NPSimulation/Detectors/Microball/Microball.cc
+++ b/NPSimulation/Detectors/Microball/Microball.cc
@@ -3025,39 +3025,24 @@ void Microball::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Microball::ReadSensitive(const G4Event* event){
+void Microball::ReadSensitive(const G4Event*){
     m_Event->Clear();
     
     ///////////
     // Calorimeter scorer
-    NPS::HitsMap<G4double*>* CaloHitMap;
-    std::map<G4int, G4double**>::iterator Calo_itr;
-    
-    G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MicroballScorer/Calorimeter");
-    CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-    
-    // Loop on the Calo map
-    for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
+    CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_MicroballScorer->GetPrimitive(0);
+
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
         
-        G4double* Info = *(Calo_itr->second);
-        //(Info[0]/2.35)*((Info[0]*1.02)*pow((Info[0]*1.8),.5))
-        // double Energy = RandGauss::shoot(Info[0],((Info[0]*1000*1.02/2.35)*pow((Info[0]*1000*1.8),.5)) );
-        double Energy = RandGauss::shoot(Info[0],Microball_NS::ResoEnergy);
+        double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Microball_NS::ResoEnergy);
         if(Energy>Microball_NS::EnergyThreshold){
-            double Time = RandGauss::shoot(Info[1],Microball_NS::ResoTime);
-            int DetectorNbr = (int) Info[7];
+            double Time = RandGauss::shoot(Scorer->GetTime(i),Microball_NS::ResoTime);
+            int DetectorNbr = Scorer->GetLevel(i)[0];
             m_Event->SetEnergy(DetectorNbr,Energy);
             m_Event->SetTime(DetectorNbr,Time); 
-            
-            ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-            ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-            ms_InterCoord->SetDetectedPositionZ(Info[4]) ;
-            ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-            ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
         }
     }
-    // clear map for next event
-    CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -3072,7 +3057,7 @@ void Microball::InitializeScorers() {
     
     // Otherwise the scorer is initialised
     vector<int> level; level.push_back(0);
-    G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("Calorimeter",level, 0) ;
+    G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level, 0) ;
     //and register it to the multifunctionnal detector
     m_MicroballScorer->RegisterPrimitive(Calorimeter);
     G4SDManager::GetSDMpointer()->AddNewDetector(m_MicroballScorer) ;
diff --git a/NPSimulation/Detectors/Miniball/Miniball.cc b/NPSimulation/Detectors/Miniball/Miniball.cc
index 020cb4fe4bd6d7382686f4331807afea081c5ef2..ac37555485b2cd29a4016be9ad118ea742171c76 100644
--- a/NPSimulation/Detectors/Miniball/Miniball.cc
+++ b/NPSimulation/Detectors/Miniball/Miniball.cc
@@ -242,31 +242,21 @@ void Miniball::ReadSensitive(const G4Event* event){
   m_Event->Clear();
 
   ///////////
-  // Calorimeter scorer
-  NPS::HitsMap<G4double*>* CaloHitMap;
-  std::map<G4int, G4double**>::iterator Calo_itr;
+  CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_MiniballScorer->GetPrimitive(0);
 
-  G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MiniballScorer/Crystal");
-  CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-
-  // Loop on the Calo map
-  for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-
-    G4double* Info = *(Calo_itr->second);
-    //(Info[0]/2.35)*((Info[0]*1.02)*pow((Info[0]*1.8),.5))
-    // double Energy = RandGauss::shoot(Info[0],((Info[0]*1000*1.02/2.35)*pow((Info[0]*1000*1.8),.5)) );
-    double Energy = RandGauss::shoot(Info[0],Miniball_NS::ResoEnergy);
+  unsigned int size = Scorer->GetMult(); 
+  for(unsigned int i = 0 ; i < size ; i++){
+    vector<unsigned int> level = Scorer->GetLevel(i); 
+    double Energy = RandGauss::shoot(Scorer->GetEnergy(i),Miniball_NS::ResoEnergy);
     if(Energy>Miniball_NS::EnergyThreshold){
-      double Time = RandGauss::shoot(Info[1],Miniball_NS::ResoTime);
-      int DetectorNbr = (int) Info[7];
-      double Angle = RandGauss::shoot(Info[5]/deg,Miniball_NS::ResoAngle);
+      double Time = RandGauss::shoot(Scorer->GetTime(i),Miniball_NS::ResoTime);
+      int DetectorNbr = level[0];
+      //double Angle = RandGauss::shoot(Info[5]/deg,Miniball_NS::ResoAngle);
       m_Event->SetEnergy(DetectorNbr,Energy);
-      m_Event->SetAngle(DetectorNbr,Angle);
+      //m_Event->SetAngle(DetectorNbr,Angle);
       m_Event->SetTime(DetectorNbr,Time); 
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -281,7 +271,7 @@ void Miniball::InitializeScorers() {
 
   // Otherwise the scorer is initialised
   vector<int> level; level.push_back(1);
-  G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("Crystal",level, 0) ;
+  G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Crystal",level, 0) ;
   //and register it to the multifunctionnal detector
   m_MiniballScorer->RegisterPrimitive(Calorimeter);
   G4SDManager::GetSDMpointer()->AddNewDetector(m_MiniballScorer) ;
diff --git a/NPSimulation/Detectors/Nana/Nana.cc b/NPSimulation/Detectors/Nana/Nana.cc
index ab52763d3d56b3f8d8d7e4a757d46a388f364a39..f5058b431e26b49a4fc799f47addd98233d35a55 100644
--- a/NPSimulation/Detectors/Nana/Nana.cc
+++ b/NPSimulation/Detectors/Nana/Nana.cc
@@ -468,33 +468,22 @@ void Nana::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Nana::ReadSensitive(const G4Event* event){
+void Nana::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
-  // LaBr3
-  NPS::HitsMap<G4double*>* LaBr3HitMap;
-  std::map<G4int, G4double**>::iterator LaBr3_itr;
-
-  G4int LaBr3CollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Nana_LaBr3Scorer/NanaLaBr3");
-  LaBr3HitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(LaBr3CollectionID));
-
-  // Loop on the LaBr3 map
-  for (LaBr3_itr = LaBr3HitMap->GetMap()->begin() ; LaBr3_itr != LaBr3HitMap->GetMap()->end() ; LaBr3_itr++){
-
-    G4double* Info = *(LaBr3_itr->second);
-    //(Info[0]/2.35)*((Info[0]*1.02)*pow((Info[0]*1.8),.5))
-    // double Energy = RandGauss::shoot(Info[0],((Info[0]*1000*1.02/2.35)*pow((Info[0]*1000*1.8),.5)) );
-    double Energy = RandGauss::shoot(Info[0],(Info[0]*0.0325637)/(2.35*pow(Info[0]-0.00975335,0.475759)));
-    if(Energy>EnergyThreshold){
-      double Time = Info[1];
-      int DetectorNbr = (int) Info[2];
-
+ CalorimeterScorers::PS_Calorimeter* Scorer= (CalorimeterScorers::PS_Calorimeter*) m_LaBr3Scorer->GetPrimitive(0);
+
+    unsigned int size = Scorer->GetMult(); 
+    for(unsigned int i = 0 ; i < size ; i++){
+      double E = Scorer->GetEnergy(i);
+      double Energy = RandGauss::shoot(E,(E*0.0325637)/(2.35*pow(E-0.00975335,0.475759)));
+      if(Energy>EnergyThreshold){
+        double Time = Scorer->GetTime(i);
+        int DetectorNbr = Scorer->GetLevel(i)[0];
       m_Event->SetNanaLaBr3(DetectorNbr,Energy,Energy,(unsigned short) Time,0,0);
     }
   }
-  // clear map for next event
-  LaBr3HitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -510,7 +499,7 @@ void Nana::InitializeScorers(){
   if(already_exist) return;
 
   G4VPrimitiveScorer* LaBr3Scorer =
-    new  CALORIMETERSCORERS::PS_Calorimeter("NanaLaBr3",NestingLevel);
+    new  CalorimeterScorers::PS_Calorimeter("NanaLaBr3",NestingLevel);
   //and register it to the multifunctionnal detector
   m_LaBr3Scorer->RegisterPrimitive(LaBr3Scorer);
 
diff --git a/NPSimulation/Detectors/NeutronWall/NeutronWall.cc b/NPSimulation/Detectors/NeutronWall/NeutronWall.cc
index a2e5b7c3c5bb5c7ff04e309fc867a381fed1de4c..0014aa595a30cf2b63ca7ce8bc560b05f6783bca 100644
--- a/NPSimulation/Detectors/NeutronWall/NeutronWall.cc
+++ b/NPSimulation/Detectors/NeutronWall/NeutronWall.cc
@@ -379,90 +379,50 @@ void NeutronWall::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAction
-void NeutronWall::ReadSensitive(const G4Event* event){
+void NeutronWall::ReadSensitive(const G4Event* ){
     m_Event->Clear();
     
     ///////////
     // Calorimeter scorer
-    NPS::HitsMap<G4double*>* CaloHitMap;
-    std::map<G4int, G4double**>::iterator Calo_itr;
-    
-    G4int CaloCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("NeutronWallScorer/Calorimeter");
-    CaloHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(CaloCollectionID));
-    
-    // Loop on the Calo map
-    for (Calo_itr = CaloHitMap->GetMap()->begin() ; Calo_itr != CaloHitMap->GetMap()->end() ; Calo_itr++){
-        
-        G4double* Info = *(Calo_itr->second);
-        //double Energy = RandGauss::shoot(Info[0],NeutronWall_NS::ResoEnergy);
-        double Energy = Info[0];
+    CalorimeterScorers::PS_Calorimeter* ScorerWall= (CalorimeterScorers::PS_Calorimeter*) m_NeutronWallScorer->GetPrimitive(0);
+
+    unsigned int sizeWall = ScorerWall->GetMult(); 
+    for(unsigned int i = 0 ; i < sizeWall ; i++){
+        vector<unsigned int> level = ScorerWall->GetLevel(i); 
+        double Energy = ScorerWall->GetEnergy(i);
         if(Energy>NeutronWall_NS::EnergyThreshold){
-            //double Time = RandGauss::shoot(Info[1],NeutronWall_NS::ResoTime);
-            double Time = Info[1];
-            int DetectorNbr = (int) Info[8];
-            int PadNbr = (int) Info[7];
-            //cout << Info[2] << " " << Info[3] << endl;
+            double Time = ScorerWall->GetTime(i);
+            int DetectorNbr = level[1];
+            int PadNbr = level[0];
             m_Event->SetEnergy(DetectorNbr,PadNbr,Energy);
             m_Event->SetTime(DetectorNbr,PadNbr,Time);
-            
-            // Interraction Coordinates
-            //Info[2]=RandGauss::shoot(Info[2],NeutronWall_NS::ResoPosition) ;
-            //Info[3]=RandGauss::shoot(Info[3],NeutronWall_NS::Py_Youter/10.0) ;
-            /*ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-            ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-            ms_InterCoord->SetDetectedPositionZ(Info[4]) ;*/
-            ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-            ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
-            
-            m_Event->Set_NeutronWall_PosX(Info[2]);
-            m_Event->Set_NeutronWall_PosY(Info[3]);
-            m_Event->Set_NeutronWall_PosZ(Info[4]);
-            
+            //m_Event->Set_NeutronWall_PosX(Info[2]);
+            //m_Event->Set_NeutronWall_PosY(Info[3]);
+            //m_Event->Set_NeutronWall_PosZ(Info[4]);
         }
     }
-    // clear map for next event
-    CaloHitMap->clear();
     
     ///////////
     // Veto wall scorer
-    NPS::HitsMap<G4double*>* VetoHitMap;
-    std::map<G4int, G4double**>::iterator Veto_itr;
-    
-    G4int VetoCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("VetoWallScorer/VetoCalorimeter");
-    VetoHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(VetoCollectionID));
-    
-    
-    // Loop on the Calo map
-    for (Veto_itr = VetoHitMap->GetMap()->begin() ; Veto_itr != VetoHitMap->GetMap()->end() ; Veto_itr++){
-        
-        G4double* Info = *(Veto_itr->second);
-        //double Energy = RandGauss::shoot(Info[0],NeutronWall_NS::ResoEnergy);
-        double Energy = Info[0];
+    CalorimeterScorers::PS_Calorimeter* ScorerVeto= (CalorimeterScorers::PS_Calorimeter*) m_VetoWallScorer->GetPrimitive(0);
+
+    unsigned int sizeVeto = ScorerVeto->GetMult(); 
+    for(unsigned int i = 0 ; i < sizeVeto ; i++){
+        vector<unsigned int> level = ScorerVeto->GetLevel(i); 
+        double Energy = ScorerVeto->GetEnergy(i);
         if(Energy>NeutronWall_NS::EnergyThreshold){
             //double Time = RandGauss::shoot(Info[1],NeutronWall_NS::ResoTime);
-            double Time = Info[1];
-            int DetectorNbr = (int) Info[8];
-            int PadNbr = (int) Info[7];
+            double Time = ScorerVeto->GetTime(i);
+            int DetectorNbr = level[1];
+            int PadNbr = level[0];
             
             m_Event->SetVetoEnergy(DetectorNbr,PadNbr,Energy);
             m_Event->SetVetoTime(DetectorNbr,PadNbr,Time);
-            
-            // Interraction Coordinates
-            //Info[2]=RandGauss::shoot(Info[2],NeutronWall_NS::PlasticBar_X/10.0) ;
-            //Info[3]=RandGauss::shoot(Info[3],NeutronWall_NS::ResoPosition) ;
-            /*ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-            ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-            ms_InterCoord->SetDetectedPositionZ(Info[4]) ;*/
-            ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-            ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
-            
-            m_Event->Set_VetoWall_PosX(Info[2]);
-            m_Event->Set_VetoWall_PosY(Info[3]);
-            m_Event->Set_VetoWall_PosZ(Info[4]);
+            //m_Event->Set_VetoWall_PosX(Info[2]);
+            //m_Event->Set_VetoWall_PosY(Info[3]);
+            //m_Event->Set_VetoWall_PosZ(Info[4]);
         }
     }
-    // clear map for next event
-    VetoHitMap->clear();
     
 }
 
@@ -482,7 +442,7 @@ void NeutronWall::InitializeScorers() {
         return ;
     
     // Neutron Wall Scorer
-    G4VPrimitiveScorer* Calorimeter= new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("Calorimeter",level,1) ;
+    G4VPrimitiveScorer* Calorimeter= new CalorimeterScorers::PS_Calorimeter("Calorimeter",level,1) ;
     //and register it to the multifunctional detector
     m_NeutronWallScorer->RegisterPrimitive(Calorimeter);
     G4SDManager::GetSDMpointer()->AddNewDetector(m_NeutronWallScorer) ;
@@ -494,7 +454,7 @@ void NeutronWall::InitializeScorers() {
     if(already_exist)
         return;
     
-    G4VPrimitiveScorer* VetoCalorimeter= new CALORIMETERSCORERS::PS_CalorimeterWithInteraction("VetoCalorimeter",level,1) ;
+    G4VPrimitiveScorer* VetoCalorimeter= new CalorimeterScorers::PS_Calorimeter("VetoCalorimeter",level,1) ;
     //and register it to the multifunctional detector
     m_VetoWallScorer->RegisterPrimitive(VetoCalorimeter);
     G4SDManager::GetSDMpointer()->AddNewDetector(m_VetoWallScorer) ;
diff --git a/NPSimulation/Detectors/Paris/Paris.cc b/NPSimulation/Detectors/Paris/Paris.cc
index e9f7c968f1e6feeee4c355bc29962b668c9ff0e0..32c15acce4f50a5a53ed18f0a7b6eb45f5c792be 100644
--- a/NPSimulation/Detectors/Paris/Paris.cc
+++ b/NPSimulation/Detectors/Paris/Paris.cc
@@ -395,63 +395,46 @@ void Paris::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Paris::ReadSensitive(const G4Event* event){
+void Paris::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // LaBr3
-  NPS::HitsMap<G4double*>* LaBr3HitMap;
-  std::map<G4int, G4double**>::iterator LaBr3_itr;
+  CalorimeterScorers::PS_Calorimeter* ScorerLaBr= (CalorimeterScorers::PS_Calorimeter*) m_LaBr3Scorer->GetPrimitive(0);
 
-  G4int LaBr3CollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Paris_LaBr3Scorer/ParisLaBr3");
-  LaBr3HitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(LaBr3CollectionID));
-
-  // Loop on the LaBr3 map
-  for (LaBr3_itr = LaBr3HitMap->GetMap()->begin() ; LaBr3_itr != LaBr3HitMap->GetMap()->end() ; LaBr3_itr++){
-
-    G4double* Info = *(LaBr3_itr->second);
-
-    double Energy = RandGauss::shoot(Info[0],ResoFirstStage);
+  unsigned int sizeLaBr = ScorerLaBr->GetMult(); 
+  for(unsigned int i = 0 ; i < sizeLaBr ; i++){
+    vector<unsigned int> level = ScorerLaBr->GetLevel(i); 
+    double Energy = RandGauss::shoot(ScorerLaBr->GetEnergy(i),ResoFirstStage);
 
     if(Energy>EnergyThreshold){
-      double Time = Info[1];
-      int PhoswichNbr = (int) Info[2];
-      int ClusterNbr = (int) Info[3];
-      
+      double Time = ScorerLaBr->GetTime(i);
+      int PhoswichNbr = level[0];
+      int ClusterNbr = level[1];
+
       m_Event->SetParisLaBr3E(ClusterNbr,PhoswichNbr,Energy);
       m_Event->SetParisLaBr3T(ClusterNbr,PhoswichNbr,Time);
     }
   }
-  // clear map for next event
-  LaBr3HitMap->clear();
 
   ///////////
   // NaI
-  NPS::HitsMap<G4double*>* NaIHitMap;
-  std::map<G4int, G4double**>::iterator NaI_itr;
-
-  G4int NaICollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Paris_NaIScorer/ParisNaI");
-  NaIHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(NaICollectionID));
-
-  // Loop on the NaI map
-  for (NaI_itr = NaIHitMap->GetMap()->begin() ; NaI_itr != NaIHitMap->GetMap()->end() ; NaI_itr++){
-
-    G4double* Info = *(NaI_itr->second);
+  CalorimeterScorers::PS_Calorimeter* ScorerNaI= (CalorimeterScorers::PS_Calorimeter*) m_NaIScorer->GetPrimitive(0);
 
-    double Energy = RandGauss::shoot(Info[0],ResoSecondStage);
+  unsigned int sizeNaI = ScorerNaI->GetMult(); 
+  for(unsigned int i = 0 ; i < sizeNaI ; i++){
+    vector<unsigned int> level = ScorerNaI->GetLevel(i); 
+    double Energy = RandGauss::shoot(ScorerNaI->GetEnergy(i),ResoSecondStage);
 
     if(Energy>EnergyThreshold){
-      double Time = Info[1];
-      int PhoswichNbr = (int) Info[2];
-      int ClusterNbr = (int) Info[3];
-     
-       m_Event->SetParisNaIE(ClusterNbr,PhoswichNbr,Energy);
+      double Time = ScorerNaI->GetTime(i);
+      int PhoswichNbr = level[0];
+      int ClusterNbr = level[1];
+
+      m_Event->SetParisNaIE(ClusterNbr,PhoswichNbr,Energy);
       m_Event->SetParisNaIT(ClusterNbr,PhoswichNbr,Time);
     }
   }
-
-  // clear map for next event
-  NaIHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -468,7 +451,7 @@ void Paris::InitializeScorers(){
   if(already_exist) return;
 
   G4VPrimitiveScorer* LaBr3Scorer =
-    new  CALORIMETERSCORERS::PS_Calorimeter("ParisLaBr3",NestingLevel);
+    new  CalorimeterScorers::PS_Calorimeter("ParisLaBr3",NestingLevel);
   //and register it to the multifunctionnal detector
   m_LaBr3Scorer->RegisterPrimitive(LaBr3Scorer);
 
@@ -484,7 +467,7 @@ void Paris::InitializeScorers(){
   if(already_exist) return;
 
   G4VPrimitiveScorer* NaIScorer =
-    new  CALORIMETERSCORERS::PS_Calorimeter("ParisNaI",NestingLevel);
+    new  CalorimeterScorers::PS_Calorimeter("ParisNaI",NestingLevel);
   //and register it to the multifunctionnal detector
   m_NaIScorer->RegisterPrimitive(NaIScorer);
 
@@ -492,24 +475,24 @@ void Paris::InitializeScorers(){
   G4SDManager::GetSDMpointer()->AddNewDetector(m_NaIScorer) ;
 
 }
- ////////////////////////////////////////////////////////////////////////////////
- //            Construct Method to be pass to the DetectorFactory              //
- ////////////////////////////////////////////////////////////////////////////////
- NPS::VDetector* Paris::Construct(){
+////////////////////////////////////////////////////////////////////////////////
+//            Construct Method to be pass to the DetectorFactory              //
+////////////////////////////////////////////////////////////////////////////////
+NPS::VDetector* Paris::Construct(){
   return  (NPS::VDetector*) new Paris();
- }
-
- ////////////////////////////////////////////////////////////////////////////////
- //            Registering the construct method to the factory                 //
- ////////////////////////////////////////////////////////////////////////////////
- extern"C" {
- class proxy_nps_paris{
-   public:
-    proxy_nps_paris(){
-      NPS::DetectorFactory::getInstance()->AddToken("Paris","Paris");
-      NPS::DetectorFactory::getInstance()->AddDetector("Paris",Paris::Construct);
-    }
-};
+}
 
- proxy_nps_paris p_nps_proxy;
- }
+////////////////////////////////////////////////////////////////////////////////
+//            Registering the construct method to the factory                 //
+////////////////////////////////////////////////////////////////////////////////
+extern"C" {
+  class proxy_nps_paris{
+    public:
+      proxy_nps_paris(){
+        NPS::DetectorFactory::getInstance()->AddToken("Paris","Paris");
+        NPS::DetectorFactory::getInstance()->AddDetector("Paris",Paris::Construct);
+      }
+  };
+
+  proxy_nps_paris p_nps_proxy;
+}
diff --git a/NPSimulation/Detectors/Plastic/Plastic.cc b/NPSimulation/Detectors/Plastic/Plastic.cc
index 1eeb8c92be4cc0f59a1da55e15a5732586d07ff2..7db84040408e48103f61adda9790e68768c32234 100644
--- a/NPSimulation/Detectors/Plastic/Plastic.cc
+++ b/NPSimulation/Detectors/Plastic/Plastic.cc
@@ -367,37 +367,45 @@ void Plastic::ReadSensitive(const G4Event* event){
   // Read the Scorer associate to the Silicon Strip
 
   //Detector Number
-  G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("PlasticScorer/PlasticNumber")     ;
+  static string collectionName;
+  collectionName = "PlasticScorer/PlasticNumber";
+  G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName)     ;
   DetectorNumberHitMap = (NPS::HitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))          ;
   DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               ;
 
   //Energy
-  G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("PlasticScorer/Energy")      ;
+  collectionName = "PlasticScorer/Energy";
+  G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName)      ;
   EnergyHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))           ;
   Energy_itr = EnergyHitMap->GetMap()->begin()                                                                ;
 
   //Time of Flight
-  G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("PlasticScorer/Time")          ;
+  collectionName = "PlasticScorer/Time";
+  G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName)          ;
   TimeHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))               ;
   Time_itr = TimeHitMap->GetMap()->begin()                                                                    ;
 
   //Interaction Coordinate X
-  G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("PlasticScorer/InterCoordX");
+  collectionName = "PlasticScorer/InterCoordX";
+  G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName);
   PosXHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID));
   Pos_X_itr = PosXHitMap->GetMap()->begin();
 
   //Interaction Coordinate Y
-  G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("PlasticScorer/InterCoordY");
+  collectionName = "PlasticScorer/InterCoordY";
+  G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName);
   PosYHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID));
   Pos_Y_itr = PosYHitMap->GetMap()->begin();
 
   //Interaction Coordinate Z
-  G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("PlasticScorer/InterCoordZ");
+  collectionName = "PlasticScorer/InterCoordZ";
+  G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName);
   PosZHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID));
   Pos_Z_itr = PosZHitMap->GetMap()->begin();
 
   //Interaction Coordinate Theta
-  G4int InterCoordThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("PlasticScorer/InterCoordTheta");
+  collectionName = "PlasticScorer/InterCoordTheta";
+  G4int InterCoordThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID(collectionName);
   AngleThetaHitMap = (NPS::HitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordThetaCollectionID));
   Angle_Theta_itr = AngleThetaHitMap->GetMap()->begin();
 
diff --git a/NPSimulation/Detectors/Sharc/Sharc.cc b/NPSimulation/Detectors/Sharc/Sharc.cc
index b4f802e28c388b05bf73f76db1129d89ac62006f..80034e65769841ed571bd7e8304a707596bc0c6e 100644
--- a/NPSimulation/Detectors/Sharc/Sharc.cc
+++ b/NPSimulation/Detectors/Sharc/Sharc.cc
@@ -42,7 +42,8 @@
 #include "G4UnionSolid.hh"
 // NPS
 #include "Sharc.hh"
-#include "SiliconScorers.hh"
+#include "DSSDScorers.hh"
+#include "InteractionScorers.hh"
 #include "MaterialManager.hh"
 #include "NPSDetectorFactory.hh"
 // NPL
@@ -77,7 +78,11 @@ Sharc::Sharc(){
 
 }
 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 Sharc::~Sharc(){
+  delete m_BOXScorer;
+  delete m_PADScorer;
+  delete m_QQQScorer;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -118,34 +123,34 @@ void Sharc::ReadConfiguration(NPL::InputParser parser){
   if(NPOptionManager::getInstance()->GetVerboseLevel())
     cout << "//// " << blocks.size() << " detectors found " << endl; 
 
- vector<string> tokenQQQ = {"Z","R","Phi","ThicknessDetector"};
- vector<string> tokenBOX = {"Z","ThicknessDetector1","ThicknessDetector2","ThicknessDetector3","ThicknessDetector4","ThicknessPAD1","ThicknessPAD2","ThicknessPAD3","ThicknessPAD4"};
- 
+  vector<string> tokenQQQ = {"Z","R","Phi","ThicknessDetector"};
+  vector<string> tokenBOX = {"Z","ThicknessDetector1","ThicknessDetector2","ThicknessDetector3","ThicknessDetector4","ThicknessPAD1","ThicknessPAD2","ThicknessPAD3","ThicknessPAD4"};
+
   for(unsigned int i = 0 ; i < blocks.size() ; i++){
 
     if(blocks[i]->GetMainValue()=="QQQ" && blocks[i]->HasTokenList(tokenQQQ)){
       if(NPOptionManager::getInstance()->GetVerboseLevel())
         cout << endl << "////  Sharc QQQ " << i+1 <<  endl;
-        double Z = blocks[i]->GetDouble("Z","mm");
-        double R = blocks[i]->GetDouble("R","mm");
-        double Phi = blocks[i]->GetDouble("Phi","deg");
-        double Thickness= blocks[i]->GetDouble("ThicknessDetector","micrometer");
-        AddQQQDetector(G4ThreeVector(R,Phi,Z),Thickness);
+      double Z = blocks[i]->GetDouble("Z","mm");
+      double R = blocks[i]->GetDouble("R","mm");
+      double Phi = blocks[i]->GetDouble("Phi","deg");
+      double Thickness= blocks[i]->GetDouble("ThicknessDetector","micrometer");
+      AddQQQDetector(G4ThreeVector(R,Phi,Z),Thickness);
     }
     else if(blocks[i]->GetMainValue()=="BOX" && blocks[i]->HasTokenList(tokenBOX)){
       if(NPOptionManager::getInstance()->GetVerboseLevel())
         cout << endl << "////  Sharc Box " << i+1 <<  endl;
-        double Z = blocks[i]->GetDouble("Z","mm");
-        double Thickness1= blocks[i]->GetDouble("ThicknessDetector1","micrometer");
-        double Thickness2= blocks[i]->GetDouble("ThicknessDetector2","micrometer");
-        double Thickness3= blocks[i]->GetDouble("ThicknessDetector3","micrometer");
-        double Thickness4= blocks[i]->GetDouble("ThicknessDetector4","micrometer");
-        double ThicknessPAD1 = blocks[i]->GetDouble("ThicknessPAD1","micrometer");
-        double ThicknessPAD2 = blocks[i]->GetDouble("ThicknessPAD2","micrometer");
-        double ThicknessPAD3 = blocks[i]->GetDouble("ThicknessPAD3","micrometer");
-        double ThicknessPAD4 = blocks[i]->GetDouble("ThicknessPAD4","micrometer");
-        AddBoxDetector(Z,Thickness1,Thickness2,Thickness3,Thickness4,
-        ThicknessPAD1,ThicknessPAD2,ThicknessPAD3,ThicknessPAD4);
+      double Z = blocks[i]->GetDouble("Z","mm");
+      double Thickness1= blocks[i]->GetDouble("ThicknessDetector1","micrometer");
+      double Thickness2= blocks[i]->GetDouble("ThicknessDetector2","micrometer");
+      double Thickness3= blocks[i]->GetDouble("ThicknessDetector3","micrometer");
+      double Thickness4= blocks[i]->GetDouble("ThicknessDetector4","micrometer");
+      double ThicknessPAD1 = blocks[i]->GetDouble("ThicknessPAD1","micrometer");
+      double ThicknessPAD2 = blocks[i]->GetDouble("ThicknessPAD2","micrometer");
+      double ThicknessPAD3 = blocks[i]->GetDouble("ThicknessPAD3","micrometer");
+      double ThicknessPAD4 = blocks[i]->GetDouble("ThicknessPAD4","micrometer");
+      AddBoxDetector(Z,Thickness1,Thickness2,Thickness3,Thickness4,
+          ThicknessPAD1,ThicknessPAD2,ThicknessPAD3,ThicknessPAD4);
 
     }
 
@@ -387,7 +392,7 @@ void Sharc::ConstructBOXDetector(G4LogicalVolume* world){
         new G4PVPlacement(new G4RotationMatrix(0,0,0),
             PAD_Wafer_Offset-G4ThreeVector(0,0,0.5*PAD_PCB_Thickness-0.5*m_ThicknessPAD[i][j]),
             logicPADWafer,"PAD_Wafer",logicPADDetector,false,DetNbr);
-      
+
         new G4PVPlacement(new G4RotationMatrix(0,0,0),
             G4ThreeVector(0,0,0),
             logicPADActiveWafer,"PAD_ActiveWafer",logicPADWafer,false,DetNbr);
@@ -566,127 +571,120 @@ void Sharc::InitializeRootOutput(){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
-void Sharc::ReadSensitive(const G4Event* event){
+void Sharc::ReadSensitive(const G4Event* ){
   m_Event->Clear();
 
   ///////////
   // BOX
-  NPS::HitsMap<G4double*>* BOXHitMap;
-  std::map<G4int, G4double**>::iterator BOX_itr;
+  DSSDScorers::PS_Rectangle* BOXScorer = (DSSDScorers::PS_Rectangle*) m_BOXScorer->GetPrimitive(0);
 
-  G4int BOXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Sharc_BOXScorer/SharcBOX");
-  BOXHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(BOXCollectionID));
 
   // Loop on the BOX map
-  for (BOX_itr = BOXHitMap->GetMap()->begin() ; BOX_itr != BOXHitMap->GetMap()->end() ; BOX_itr++){
+  unsigned int sizeFront= BOXScorer->GetLengthMult();
 
-    G4double* Info = *(BOX_itr->second);
+  for (unsigned int i=0 ; i<sizeFront ; i++){
 
-    double Energy = Info[0];
+    double Energy = BOXScorer->GetEnergyLength(i);
 
     if(Energy>EnergyThreshold){
-      double Time       = Info[1];
-      int DetNbr        = (int) Info[7];
-      int StripFront    = (int) Info[8];
-      int StripBack     = (int) Info[9];
-
-      m_Event->SetFront_DetectorNbr(DetNbr);
-      m_Event->SetFront_StripNbr(StripFront);
-      m_Event->SetFront_Energy(RandGauss::shoot(Energy, ResoEnergy));
-      m_Event->SetFront_TimeCFD(RandGauss::shoot(Time, ResoTime));
-      m_Event->SetFront_TimeLED(RandGauss::shoot(Time, ResoTime));
-
-      m_Event->SetBack_DetectorNbr(DetNbr);
-      m_Event->SetBack_StripNbr(BOX_Wafer_Back_NumberOfStrip-StripBack+1);
-
-      m_Event->SetBack_Energy(RandGauss::shoot(Energy, ResoEnergy));
-      m_Event->SetBack_TimeCFD(RandGauss::shoot(Time, ResoTime));
-      m_Event->SetBack_TimeLED(RandGauss::shoot(Time, ResoTime));
-
-      // Interraction Coordinates
-      ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-      ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-      ms_InterCoord->SetDetectedPositionZ(Info[4]) ;
-      ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-      ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
+      double Time       = BOXScorer->GetTimeLength(i);
+      int DetNbr        = BOXScorer->GetDetectorLength(i);
+      int StripFront    = BOXScorer->GetStripLength(i);
+      
+      m_Event->SetFront(DetNbr,
+      StripFront,
+      RandGauss::shoot(Energy, ResoEnergy),
+      RandGauss::shoot(Time, ResoTime),
+      RandGauss::shoot(Time, ResoTime));
+    }
+  } 
+
+  unsigned int sizeBack= BOXScorer->GetWidthMult();
+  for (unsigned int i=0 ; i<sizeBack ; i++){
+
+    double Energy = BOXScorer->GetEnergyWidth(i);
 
+    if(Energy>EnergyThreshold){
+      double Time       = BOXScorer->GetTimeWidth(i);
+      int DetNbr        = BOXScorer->GetDetectorWidth(i);
+      int StripBack    = BOXScorer->GetStripWidth(i);
+
+      m_Event->SetBack(DetNbr,
+      BOX_Wafer_Back_NumberOfStrip-StripBack+1,
+      RandGauss::shoot(Energy, ResoEnergy),
+      RandGauss::shoot(Time, ResoTime),
+      RandGauss::shoot(Time, ResoTime));
     }
   }
   // clear map for next event
-  BOXHitMap->clear();
-
+  BOXScorer->clear();
   ///////////
   // PAD
-  NPS::HitsMap<G4double*>*     PADHitMap;
-  std::map<G4int, G4double**>::iterator    PAD_itr;
+  DSSDScorers::PS_Rectangle* PADScorer = (DSSDScorers::PS_Rectangle*) m_PADScorer->GetPrimitive(0);
 
-  G4int PADCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Sharc_PADScorer/SharcPAD");
-  PADHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(PADCollectionID));
 
-  // Loop on the BOX map
-  for (PAD_itr = PADHitMap->GetMap()->begin() ; PAD_itr != PADHitMap->GetMap()->end() ; PAD_itr++){
+  // Loop on the PAD map
+  unsigned int sizePAD= PADScorer->GetLengthMult();
+  for (unsigned int i=0 ; i<sizePAD ; i++){
 
-    G4double* Info = *(PAD_itr->second);
+    double Energy = PADScorer->GetEnergyLength(i);
 
-    double Energy =  Info[0];
     if(Energy>EnergyThreshold){
-      double Time  = Info[1];
-      int DetNbr =     (int) Info[7];
+      double Time       = PADScorer->GetTimeLength(i);
+      int DetNbr        = PADScorer->GetDetectorLength(i);
 
-      m_Event->SetPAD_DetectorNbr(DetNbr);
-      m_Event->SetPAD_Energy(RandGauss::shoot(Energy, ResoEnergy));
-      m_Event->SetPAD_TimeCFD(RandGauss::shoot(Time, ResoTime));
-      m_Event->SetPAD_TimeLED(RandGauss::shoot(Time, ResoTime));
+      m_Event->SetPAD(DetNbr,
+      RandGauss::shoot(Energy, ResoEnergy),
+      RandGauss::shoot(Time, ResoTime),
+      RandGauss::shoot(Time, ResoTime));
     }
-  }
+  } 
 
   // clear map for next event
-  PADHitMap->clear();
+  PADScorer->clear();
 
   ///////////
   // QQQ
-  NPS::HitsMap<G4double*>* QQQHitMap;
-  std::map<G4int, G4double**>::iterator QQQ_itr;
+  DSSDScorers::PS_Annular* QQQScorer = (DSSDScorers::PS_Annular*) m_QQQScorer->GetPrimitive(0);
 
-  G4int QQQCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("Sharc_QQQScorer/SharcQQQ");
-  QQQHitMap = (NPS::HitsMap<G4double*>*)(event->GetHCofThisEvent()->GetHC(QQQCollectionID));
+  // Loop on the QQQ map
+  unsigned int sizeRing= QQQScorer->GetRingMult();
 
-  // Loop on the BOX map
-  for (QQQ_itr = QQQHitMap->GetMap()->begin() ; QQQ_itr != QQQHitMap->GetMap()->end() ; QQQ_itr++){
+  for (unsigned int i=0 ; i<sizeRing ; i++){
 
-    G4double* Info = *(QQQ_itr->second);
+    double Energy = QQQScorer->GetEnergyRing(i);
 
-    double Energy =  Info[0];
     if(Energy>EnergyThreshold){
-      double Time  = Info[1];
-      int DetNbr =     (int) Info[7];
-      int StripFront = (int) Info[8];
-      int StripBack =  (int) Info[9];
-
-      m_Event->SetFront_DetectorNbr(DetNbr);
-      m_Event->SetFront_StripNbr(QQQ_Wafer_NumberOf_AnnularStrip-StripFront+1); // Order is reverse (1 is outtermost strip)
-
-      m_Event->SetFront_Energy(RandGauss::shoot(Energy, ResoEnergy));
-      m_Event->SetFront_TimeCFD(RandGauss::shoot(Time, ResoTime));
-      m_Event->SetFront_TimeLED(RandGauss::shoot(Time, ResoTime));
-
-      m_Event->SetBack_DetectorNbr(DetNbr);
-      m_Event->SetBack_StripNbr(StripBack);
-      m_Event->SetBack_Energy(RandGauss::shoot(Energy, ResoEnergy));
-      m_Event->SetBack_TimeCFD(RandGauss::shoot(Time, ResoTime));
-      m_Event->SetBack_TimeLED(RandGauss::shoot(Time, ResoTime));
-
-      // Interraction Coordinates
-      ms_InterCoord->SetDetectedPositionX(Info[2]) ;
-      ms_InterCoord->SetDetectedPositionY(Info[3]) ;
-      ms_InterCoord->SetDetectedPositionZ(Info[4]) ;
-      ms_InterCoord->SetDetectedAngleTheta(Info[5]/deg) ;
-      ms_InterCoord->SetDetectedAnglePhi(Info[6]/deg) ;
+      double Time       = QQQScorer->GetTimeRing(i);
+      int DetNbr        = QQQScorer->GetDetectorRing(i);
+      int StripRing    = QQQScorer->GetStripRing(i);
+      m_Event->SetFront(DetNbr,
+      QQQ_Wafer_NumberOf_AnnularStrip-StripRing+1,
+      RandGauss::shoot(Energy, ResoEnergy),
+      RandGauss::shoot(Time, ResoTime),
+      RandGauss::shoot(Time, ResoTime));
     }
-  }
+  } 
 
+  unsigned int sizeSector= QQQScorer->GetSectorMult();
+  for (unsigned int i=0 ; i<sizeSector ; i++){
+
+    double Energy = QQQScorer->GetEnergySector(i);
+
+    if(Energy>EnergyThreshold){
+      double Time       = QQQScorer->GetTimeSector(i);
+      int DetNbr        = QQQScorer->GetDetectorSector(i);
+      int StripSector    = QQQScorer->GetStripSector(i);
+
+      m_Event->SetBack(DetNbr,
+      StripSector,
+      RandGauss::shoot(Energy, ResoEnergy),
+      RandGauss::shoot(Time, ResoTime),
+      RandGauss::shoot(Time, ResoTime));
+    }
+  }
   // clear map for next event
-  QQQHitMap->clear();
+  QQQScorer->clear();
 
 }
 
@@ -698,37 +696,44 @@ void Sharc::InitializeScorers(){
   m_BOXScorer = CheckScorer("Sharc_BOXScorer",already_exist);
   m_PADScorer = CheckScorer("Sharc_PADScorer",already_exist);
   m_QQQScorer = CheckScorer("Sharc_QQQScorer",already_exist);
-
   // if the scorer were created previously nothing else need to be made
   if(already_exist) return;
 
   G4VPrimitiveScorer* BOXScorer =
-    new  SILICONSCORERS::PS_Silicon_Rectangle("SharcBOX",0,
+    new  DSSDScorers::PS_Rectangle("SharcBOX",0,
         BOX_ActiveWafer_Length,
         BOX_ActiveWafer_Width,
         BOX_Wafer_Front_NumberOfStrip ,
         BOX_Wafer_Back_NumberOfStrip);
 
   G4VPrimitiveScorer* PADScorer =
-    new  SILICONSCORERS::PS_Silicon_Rectangle("SharcPAD",0,
+    new  DSSDScorers::PS_Rectangle("SharcPAD",0,
         PAD_Wafer_Length,
         PAD_Wafer_Width,
         1 ,
         1);
 
   G4VPrimitiveScorer* QQQScorer =
-    new  SILICONSCORERS::PS_Silicon_Annular("SharcQQQ",0,
+    new  DSSDScorers::PS_Annular("SharcQQQ",0,
         QQQ_Wafer_Inner_Radius,
         QQQ_Wafer_Outer_Radius,
         QQQ_Wafer_Starting_Phi,
         QQQ_Wafer_Stopping_Phi,
         QQQ_Wafer_NumberOf_AnnularStrip,
         QQQ_Wafer_NumberOf_RadialStrip,1);
-
+  
+  G4VPrimitiveScorer* InterScorerBOX = 
+    new  InteractionScorers::PS_Interactions("SharcBOXInteractionScorer",ms_InterCoord,0);
+ 
+ G4VPrimitiveScorer* InterScorerQQQ = 
+    new  InteractionScorers::PS_Interactions("SharcQQQInteractionScorer",ms_InterCoord,0);
+  
   //and register it to the multifunctionnal detector
   m_BOXScorer->RegisterPrimitive(BOXScorer);
+  m_BOXScorer->RegisterPrimitive(InterScorerBOX);
   m_PADScorer->RegisterPrimitive(PADScorer);
   m_QQQScorer->RegisterPrimitive(QQQScorer);
+  m_QQQScorer->RegisterPrimitive(InterScorerQQQ);
 
   //   Add All Scorer to the Global Scorer Manager
   G4SDManager::GetSDMpointer()->AddNewDetector(m_BOXScorer) ;
diff --git a/NPSimulation/Detectors/TNT/TNT.cc b/NPSimulation/Detectors/TNT/TNT.cc
index 5da3f990161257be50318f2545ce04f3870d5b38..6c99830f65ac817bc87a3ebd2ef4dd6e63881d35 100644
--- a/NPSimulation/Detectors/TNT/TNT.cc
+++ b/NPSimulation/Detectors/TNT/TNT.cc
@@ -357,8 +357,6 @@ void TNT::ReadSensitive(const G4Event* event){
       // cout << DetectorNbr << " " << Energy << " " << Time << " " << endl;
     }
   }
-  // clear map for next event
-  CaloHitMap->clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/NPSimulation/EventGenerator/CMakeLists.txt b/NPSimulation/EventGenerator/CMakeLists.txt
index a06b1154c6deefb2bf13119c77cb5cadbc3d3713..675b443c06a292e419dc3b95e08fbfd2fe4d0fd9 100644
--- a/NPSimulation/EventGenerator/CMakeLists.txt
+++ b/NPSimulation/EventGenerator/CMakeLists.txt
@@ -1,2 +1,2 @@
-add_library(NPSEventGenerator OBJECT EventGeneratorParticleDecay.cc EventGeneratorBeam.cc EventGeneratorTwoBodyReaction.cc EventGeneratorMultipleParticle.cc EventGeneratorGammaDecay.cc EventGeneratorIsotropic.cc VEventGenerator.cc) 
+add_library(NPSEventGenerator OBJECT EventGeneratorBeam.cc EventGeneratorMultipleParticle.cc EventGeneratorIsotropic.cc VEventGenerator.cc) 
 #target_link_libraries(NPSEventGenerator ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPInitialConditions -lNPInteractionCoordinates )
diff --git a/NPSimulation/EventGenerator/EventGeneratorGammaDecay.cc b/NPSimulation/EventGenerator/EventGeneratorGammaDecay.cc
deleted file mode 100644
index af815fab7e4fc5eded5ac4fa081b5e88b1e457fa..0000000000000000000000000000000000000000
--- a/NPSimulation/EventGenerator/EventGeneratorGammaDecay.cc
+++ /dev/null
@@ -1,280 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
- *                                                                           *
- * Creation Date  : May 2012                                                 *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This event Generator is used to simulated a gamma decay of nuclei genera-*
- * ted by previous event generator. Multiple cases are supported:            *
- *  - Only one gamma is emmited, in this case a Cross section can be given   *
- *  - A cascade decay, in this case the CS is ignore                         *
- *  - If more than one cascade are given, Branching Ratio could be given     *
- *                                                                           *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *                                                                           *
- *                                                                           *
- *                                                                           *
- *****************************************************************************/
-
-#include "EventGeneratorGammaDecay.hh"
-
-// NPS
-#include "Particle.hh"
-
-// NPL
-#include "NPOptionManager.h"
-#include "NPFunction.h"
-#include "NPInputParser.h"
-using namespace NPL;
-
-// G4 headers including CLHEP headers
-// for generating random numbers
-#include "Randomize.hh"
-
-// G4
-#include "G4ParticleTable.hh"
-#include "G4IonTable.hh"
-// ROOT
-#include "TLorentzVector.h"
-#include "TVector3.h"
-#include "TF1.h"
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventGeneratorGammaDecay::EventGeneratorGammaDecay(){
-  m_ParticleStack = ParticleStack::getInstance();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventGeneratorGammaDecay::~EventGeneratorGammaDecay(){
-  m_CrossSectionHist.clear();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorGammaDecay::ReadConfiguration(NPL::InputParser parser){
-  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("GammaCascade");
-  vector<string> token = {"BranchingRatio","Energies"};
-
-  for(unsigned int i = 0 ; i < blocks.size() ; i++){
-    if(NPOptionManager::getInstance()->GetVerboseLevel())
-      cout << endl << "\033[1;35m//// Cascade for nuclei " << blocks[i]->GetMainValue() << endl;
-    if(m_NucleiName=="")
-      m_NucleiName = blocks[i]->GetMainValue();
-
-    else if(m_NucleiName!=blocks[i]->GetMainValue()){
-      cout << "ERROR: The decay of only one nuclei is presently supported\033[0m" << endl;
-      exit(1);
-    }
-   
-    vector<double> E = blocks[i]->GetVectorDouble("Energies","MeV");
-    double BranchingRatio = blocks[i]->GetDouble("BranchingRatio","void");  
-    vector<string> CS; 
-    if(blocks[i]->HasToken("DifferentialCrossSection"))
-      CS = blocks[i]->GetVectorString("DifferentialCrossSection");
-
-    // Sanity Check
-    if(E.size()>1 && CS.size()>0){
-      cout << "ERROR: Cannot use Cross section with decay of multiple gamma" << endl;
-    }
-     
-    if(CS.size()>0) 
-      AddCascade(E, BranchingRatio, CS[0] , CS[1]);
-    else
-      AddCascade(E, BranchingRatio);
-  }
-  
-  PrepareCascade();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorGammaDecay::GenerateEvent(G4Event*){
-  
-  // Choose a Cascade to follow
-  int ChoosenCascade = -1;
-  double RandomNumber = RandFlat::shoot();
-  
-  for (unsigned int i = 1; i<m_BranchingRatio.size(); i++) {
-    if(RandomNumber > m_BranchingRatio[i-1] && RandomNumber< m_BranchingRatio[i])
-      ChoosenCascade=i;
-  }
-  
-  if (ChoosenCascade==-1) ChoosenCascade=0;
-  
-  // Look for the decaying nucleus
-  Particle decayingParticle = m_ParticleStack->SearchAndRemoveParticle(m_NucleiName);
-  
-  if(decayingParticle.GetParticleDefinition()==NULL){
-    G4cout << "Gamma Decay Warning: The decaying particle " << m_NucleiName
-    << " was not found in the particle stack " << G4endl;
-    return ;
-  }
-  // Check for energies conservation (i.e: Cascade Energies lower than Excitation energie)
-  string ExcitationString = decayingParticle.GetParticleDefinition()->GetParticleName();
-  ExcitationString.erase(0,m_NucleiName.length()+1);
-  ExcitationString.erase(ExcitationString.length()-1,ExcitationString.length());
-  double ExcitationEnergy = atof(ExcitationString.c_str())*keV;
-  
-  // Compute the final excitation energy of the decaying nuclei
-  double FinalExcitationEnergy = ExcitationEnergy-m_CascadeTotalEnergy[ChoosenCascade];
-  if(FinalExcitationEnergy<0){
-    G4cout << "Gamma Decay Warning: The cascade energy exceed the excitation energy of the decaying nuclei: "
-    << G4endl << " Excitation Energy : " << ExcitationEnergy
-    << G4endl << " Cascade Energy : "    <<    m_CascadeTotalEnergy[ChoosenCascade] << G4endl;
-    FinalExcitationEnergy=0;
-  }
-  
-  // Put back the decaying nucleus with its new excitation energy
-  G4ParticleDefinition* FinalParticleDefition
-  = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(decayingParticle.GetParticleDefinition()->GetAtomicNumber(), decayingParticle.GetParticleDefinition()->GetAtomicMass(), FinalExcitationEnergy*MeV);
-  
-  Particle FinalParticle = Particle(  FinalParticleDefition,
-                                    decayingParticle.GetParticleThetaCM(),
-                                    decayingParticle.GetParticleKineticEnergy(),
-                                    decayingParticle.GetParticleMomentumDirection(),
-                                    decayingParticle.GetParticlePosition(),
-                                    decayingParticle.GetShootStatus());
-  
-  m_ParticleStack->AddParticleToStack(FinalParticle);
-  
-  // Instantiate and add the gamma to the particle stack
-  for (unsigned int i = 0; i < m_Energies[ChoosenCascade].size(); i++) {
-    G4ParticleDefinition* gammaDefinition = G4ParticleTable::GetParticleTable()->FindParticle("gamma");
-    G4ThreeVector gammaDirection;
-    double theta=0;
-    double phi=0;
-    // If more than one gamma shoot no cross section to follow
-    if(m_Energies[ChoosenCascade].size()>1){
-      
-      // Shoot flat in cos(theta) and Phi to have isotropic emission
-      double cos_theta = -1+2*RandFlat::shoot();
-      theta = acos(cos_theta);
-      phi = RandFlat::shoot()*2.*pi;
-      
-      gammaDirection= G4ThreeVector(  cos(phi)*sin(theta),
-                                    sin(phi)*sin(theta),
-                                    cos(theta));
-    }
-    
-    // Only one gamma to shoot, use the given cross section
-    else{
-      theta = m_CrossSectionHist[ChoosenCascade]->GetRandom()*deg;
-      phi   = RandFlat::shoot() * 2. *pi;
-      gammaDirection= G4ThreeVector(  cos(phi)*sin(theta),
-                                    sin(phi)*sin(theta),
-                                    cos(theta));
-    }
-    
-    // Doppler shifted gamma emission
-    decayingParticle.GetParticleMomentumDirection();
-    double gammaEnergy = m_Energies[ChoosenCascade][i];
-    TLorentzVector GammaLV( gammaEnergy*cos(phi)*sin(theta),
-                           gammaEnergy*sin(phi)*sin(theta),
-                           gammaEnergy*cos(theta),
-                           gammaEnergy);
-    
-    double NucleiEnergy= decayingParticle.GetParticleKineticEnergy()+FinalParticleDefition->GetPDGMass();
-    double NucleiMomentum= sqrt(NucleiEnergy*NucleiEnergy-FinalParticleDefition->GetPDGMass()*FinalParticleDefition->GetPDGMass());
-    TLorentzVector NuvleiLV( NucleiMomentum*decayingParticle.GetParticleMomentumDirection().x(),
-                            NucleiMomentum*decayingParticle.GetParticleMomentumDirection().y(),
-                            NucleiMomentum*decayingParticle.GetParticleMomentumDirection().z(),
-                            NucleiEnergy);
-    
-    GammaLV.Boost(NuvleiLV.BoostVector());
-    gammaDirection= G4ThreeVector(  GammaLV.Px(),
-                                  GammaLV.Py(),
-                                  GammaLV.Pz());
-    // Add the gamma to the stack
-    Particle gammaParticle(gammaDefinition,theta,GammaLV.E(),gammaDirection, decayingParticle.GetParticlePosition());
-    m_ParticleStack->AddParticleToStack(gammaParticle);
-  }
-  
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorGammaDecay::SetTarget(Target* Target){
-  m_Target = Target;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorGammaDecay::AddCascade(vector<double> Energies, double BranchingRatio, string CrossSectionPath, string CrossSectionName){
-  m_BranchingRatio.push_back(BranchingRatio);
-  m_CrossSectionPath.push_back(CrossSectionPath);
-  m_CrossSectionName.push_back(CrossSectionName);
-  m_Energies.push_back(Energies);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorGammaDecay::PrepareCascade(){
-  // Change the given branching ratio so total is one (always have a decay during the event)
-  double TotalRatio=0;
-  for (unsigned int i = 0; i < m_BranchingRatio.size(); i++) {
-    TotalRatio+=m_BranchingRatio[i]/100.;
-  }
-  
-  // Check that the total ratio is not over 100% (below is allowed)
-  if(TotalRatio>1) {
-    cout << "Gamma Decay Error: Sum of branching ratio is over 100%" << endl;
-    exit(1);
-  }
-  
-  for (unsigned int i = 0; i < m_BranchingRatio.size(); i++) {
-    m_BranchingRatio[i]=(m_BranchingRatio[i]/TotalRatio)/100.;
-  }
-  
-  // Shift the Branching ratio for faster shooting during event generation
-  for (unsigned int i = 1; i < m_BranchingRatio.size(); i++) {
-    m_BranchingRatio[i]=m_BranchingRatio[i-1]+m_BranchingRatio[i];
-  }
-  
-  // Compute the total energy of the cascade
-  double TotalEnergy=0;
-  for (unsigned int i = 0 ; i < m_Energies.size(); i++) {
-    TotalEnergy=0;
-    for (unsigned int j = 0; j < m_Energies[i].size(); j++) {
-      TotalEnergy+=m_Energies[i][j];
-    }
-    m_CascadeTotalEnergy.push_back(TotalEnergy);
-  }
-  
-  // Transform the particle name to G4 standard: i.e: 10He -> He10
-  m_NucleiName = m_ParticleStack->ChangeNameToG4Standard(m_NucleiName);
-  if (m_NucleiName=="proton"   ||
-      m_NucleiName=="deuteron" ||
-      m_NucleiName=="triton"   ||
-      m_NucleiName=="3He"      ||
-      m_NucleiName=="alpha"    ){
-    G4cout << "Gamma Decay Error: Gamma Decay not allowed for light particles" << G4endl;
-    exit(1);
-  }
-  
-  /// Load the differential cross section
-  for (unsigned int i = 0; i < m_BranchingRatio.size(); i++) {
-    TH1F* h ;
-    
-    if(m_CrossSectionPath[i]!="_void_"){
-      h = Read1DProfile(m_CrossSectionPath[i],m_CrossSectionName[i]);
-      TF1* sinus = new TF1("sinus","1/sin(x*3.141592653589793/180.)",0,180);
-      h->Divide(sinus,1);
-      delete sinus;
-    }
-
-    else{
-      int offset = 0;
-      while(gDirectory->FindObjectAny(Form("_gammavoid_%i",offset))!=0)
-        ++offset;
-      
-      h = new TH1F(Form("_gammavoid_%i",offset),Form("_gammavoid_%i",offset),1,0,1);
-      }
-    
-    m_CrossSectionHist.push_back(h);
-  }
-}
-
diff --git a/NPSimulation/EventGenerator/EventGeneratorGammaDecay.hh b/NPSimulation/EventGenerator/EventGeneratorGammaDecay.hh
deleted file mode 100644
index 26d6806d138726d7cb531a3b5cc3915f46293bd7..0000000000000000000000000000000000000000
--- a/NPSimulation/EventGenerator/EventGeneratorGammaDecay.hh
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef EventGeneratorGammaDecay_H
-#define EventGeneratorGammaDecay_H
-/*****************************************************************************
- * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
- *                                                                           *
- * Creation Date  : May 2012                                                 *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This event Generator is used to simulated a gamma decay of nuclei genera-*
- * ted by previous event generator. Multiple cases are supported:            *
- *  - Only one gamma is emmited, in this case a Cross section can be given   *
- *  - A cascade decay, in this case the CS is ignore                         *
- *  - If more than one cascade are given, Branching Ratio could be given     *
- *                                                                           *
- *  Using the "Source Token" the class can be used to simulate gamma ray sou-*
- * rce and Doppler shifted gamma rays.                                       *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *                                                                           *
- *                                                                           *
- *                                                                           *
- *****************************************************************************/
-
-// STL
-#include <string>
-#include <iostream>
-using namespace std;
-// NPSimulation
-#include "VEventGenerator.hh"
-#include "Target.hh"
-#include "ParticleStack.hh"
-#include "NPInputParser.h"
-// ROOT
-#include "TH1F.h"
-
-
-
-class EventGeneratorGammaDecay : public NPS::VEventGenerator{
-public: // Constructor and destructor
-  EventGeneratorGammaDecay();
-  ~EventGeneratorGammaDecay();
-  
-public: // Inherit from VEventGenerator class
-  void ReadConfiguration(NPL::InputParser);
-  void GenerateEvent(G4Event*);
-  void SetTarget(Target* Target) ;
-  
-private: // Target Parameter
-  Target* m_Target;
-  
-  
-private: // The decaying nuclei
-  string m_NucleiName;
-private: // the gamma rays property
-  vector<double>  m_BranchingRatio;
-  vector<string>  m_CrossSectionPath;
-  vector<string>  m_CrossSectionName;
-  vector<TH1F*>   m_CrossSectionHist;
-  vector<double>  m_CascadeTotalEnergy;
-  vector< vector<double> > m_Energies;
-  
-private: // Pointer to the Particle stack for faster acces
-  ParticleStack* m_ParticleStack;
-public: // Managing the different cascade
-        // Add a new cascade
-  void AddCascade(vector<double> Energies, double BranchingRatio=-1, string CrossSectionPath="_void_" , string CrossSectionName = "_void_");
-  // Read all the added cscade en instentiate every thing that is needed
-  void PrepareCascade();
-};
-#endif
diff --git a/NPSimulation/EventGenerator/EventGeneratorParticleDecay.cc b/NPSimulation/EventGenerator/EventGeneratorParticleDecay.cc
deleted file mode 100644
index 40e5e8b4637019cc3b76c1ec31c35c7c4165c9d2..0000000000000000000000000000000000000000
--- a/NPSimulation/EventGenerator/EventGeneratorParticleDecay.cc
+++ /dev/null
@@ -1,322 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
- *                                                                           *
- * Creation Date  : May 2012                                                 *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This event Generator is used to simulated the particle decay of nuclei   *
- * generated by previous event generator. Multiple cases are supported:      *
- *  - Only one particle is emmited, in this case a Cross section can be given*
- *  - If Multiple particle are emitted, a Phase Space generator is used      *
- *                                                                           *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *                                                                           *
- *                                                                           *
- *                                                                           *
- *****************************************************************************/
-
-#include "EventGeneratorParticleDecay.hh"
-
-// NPS
-#include "Particle.hh"
-
-// G4
-#include "G4ParticleTable.hh"
-#include "G4IonTable.hh"
-
-// G4 headers including CLHEP headers
-// for generating random numbers
-#include "Randomize.hh"
-
-// NPL
-#include "NPNucleus.h"
-#include "NPOptionManager.h"
-using namespace NPL;
-
-// ROOT
-#include "TLorentzVector.h"
-#include "TVector3.h"
-#include "TF1.h"
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventGeneratorParticleDecay::EventGeneratorParticleDecay(){
-    m_ParticleStack = ParticleStack::getInstance();
-}
-
-EventGeneratorParticleDecay::~EventGeneratorParticleDecay(){
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorParticleDecay::ReadConfiguration(NPL::InputParser parser){
-
-  vector<NPL::InputBlock*> blocks = parser.GetAllBlocksWithToken("ParticleDecay");
-  
-  m_MotherNucleiName = blocks[0]->GetMainValue();
-  if(NPOptionManager::getInstance()->GetVerboseLevel())
-    cout << endl << "\033[1;35m//// Particle decay found for" << m_MotherNucleiName << endl; 
-
-  vector<string> token = {"Daughter","shoot"};
-  vector<string> DaughterName;
-  vector<int>   shoot;
-  vector<double> ExcitationEnergy;
-  string CSPath = "TGenPhaseSpace";
-  string CSName = "";
-  for(unsigned int i = 0 ; i < blocks.size() ; i++){
-    if(blocks[i]->HasTokenList(token)){
-      DaughterName = blocks[i]->GetVectorString("Daughter");
-      shoot        = blocks[i]->GetVectorInt("shoot");
-      
-      if(blocks[i]->HasToken("ExcitationEnergy"))
-        ExcitationEnergy =  blocks[i]->GetVectorDouble("ExcitationEnergy","MeV"); 
-      
-      if(blocks[i]->HasToken("DifferentialCrossSection")){
-          vector<string> cs = blocks[i]->GetVectorString("DifferentialCrossSection");
-          CSPath = cs[0]; CSName=cs[1];
-      }
-
-    }
-    else{
-      cout << "ERROR: check your input file formatting \033[0m" << endl; 
-      exit(1);
-    }
-  }
-  
-  if(ExcitationEnergy.size()==0)
-    ExcitationEnergy.resize(DaughterName.size(),0);
-
-  SetDecay(DaughterName,shoot,ExcitationEnergy,CSPath,CSName);
-  cout << "\033[0m" ;
-
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorParticleDecay::GenerateEvent(G4Event*){
-    // Look for the decaying nucleus
-    Particle decayingParticle = m_ParticleStack->SearchAndRemoveParticle(m_MotherNucleiName);
-    if(decayingParticle.GetParticleDefinition()==NULL){
-        G4cout << "Particle Decay Warning: The decaying particle " << m_MotherNucleiName
-        << " was not found in the particle stack " << G4endl;
-        return ;
-    }
-    
-    G4ParticleDefinition* decayingParticleDefinition = decayingParticle.GetParticleDefinition();
-    // Build the decaying particle four momenta vector:
-    
-    double NucleiEnergy= decayingParticle.GetParticleKineticEnergy()+decayingParticleDefinition->GetPDGMass();
-    
-    double NucleiMomentum=sqrt(NucleiEnergy*NucleiEnergy -
-                               decayingParticleDefinition->GetPDGMass()*decayingParticleDefinition->GetPDGMass());
-    
-    G4ThreeVector Momentum = decayingParticle.GetParticleMomentumDirection().unit();
-    
-    // Case of one particle decaying with a user given cross section
-    if(m_DifferentialCrossSection!="TGenPhaseSpace"){
-        TLorentzVector NucleiLV( NucleiMomentum*Momentum.x(),
-                                NucleiMomentum*Momentum.y(),
-                                NucleiMomentum*Momentum.z(),
-                                NucleiEnergy);
-        // Shoot the angle in Center of Mass (CM) frame
-        G4double ThetaCM = m_CrossSectionHist->GetRandom()* deg;
-        G4double phi     = RandFlat::shoot()*2.*pi;
-        
-        // Build daughter particule CM LV
-        // Pre compute variable for the decay
-        double M  = decayingParticleDefinition->GetPDGMass();
-        double m1 = m_DaughterNuclei[0]->GetPDGMass();
-        double m2 = m_DaughterNuclei[1]->GetPDGMass();
-        
-        if(M<(m1+m2))
-            G4cout << "Warning: Particle Decay forbiden by kinematic, no particle emitted "<<endl;
-        
-        else {
-            double Energy = ( 1./(2.*M) )*( M*M + m1*m1 - m2*m2);
-            double Momentum1 = sqrt(Energy*Energy - m1*m1);
-            
-            TVector3 FirstDaughterMomentum = Momentum1 * TVector3( sin(ThetaCM) * cos(phi),
-                                                                  sin(ThetaCM) * sin(phi),
-                                                                  cos(ThetaCM));
-            
-            TLorentzVector FirstDaughterLV(FirstDaughterMomentum,Energy);
-            
-            FirstDaughterLV.Boost( NucleiLV.BoostVector() );
-            TLorentzVector SecondDaughterLV = NucleiLV - FirstDaughterLV;
-            
-            G4ThreeVector DaughterDirection = G4ThreeVector( FirstDaughterLV.X()   ,
-                                                            FirstDaughterLV.Y()   ,
-                                                            FirstDaughterLV.Z()   );
-            
-            Particle FirstDaughterParticle( m_DaughterNuclei[0],
-                                           ThetaCM,
-                                           FirstDaughterLV.E()-m_DaughterNuclei[0]->GetPDGMass(),
-                                           DaughterDirection.unit(),
-                                           decayingParticle.GetParticlePosition(),
-                                           m_shoot[0]);
-            
-            DaughterDirection = G4ThreeVector( SecondDaughterLV.X()   ,
-                                              SecondDaughterLV.Y()   ,
-                                              SecondDaughterLV.Z()   );
-            
-            Particle SecondDaughterParticle( m_DaughterNuclei[1],
-                                            ThetaCM+M_PI,
-                                            SecondDaughterLV.E()-m_DaughterNuclei[1]->GetPDGMass(),
-                                            DaughterDirection.unit(),
-                                            decayingParticle.GetParticlePosition(),
-                                            m_shoot[1]);
-            
-            m_ParticleStack->AddParticleToStack(FirstDaughterParticle);
-            m_ParticleStack->AddParticleToStack(SecondDaughterParticle);
-        }
-        
-    }
-    
-    // Case of a TGenPhaseSpace
-    else{
-        TLorentzVector NucleiLV( NucleiMomentum*Momentum.x()/GeV,
-                                NucleiMomentum*Momentum.y()/GeV,
-                                NucleiMomentum*Momentum.z()/GeV,
-                                NucleiEnergy/GeV);
-        
-        if( !m_TPhaseSpace.SetDecay(NucleiLV, m_DaughterNuclei.size(), m_Masses) )
-            G4cout << "Warning: Phase Space Decay forbiden by kinematic, or more than 18 particles, no particle emitted "<<endl;
-        
-        else{
-            m_TPhaseSpace.Generate();
-            
-            TLorentzVector* daughterLV ;
-            double KineticEnergy;
-            
-            for (unsigned int i = 0 ;  i < m_DaughterNuclei.size(); i++) {
-                
-                daughterLV = m_TPhaseSpace.GetDecay(i);
-                G4ThreeVector daughterDirection = G4ThreeVector( daughterLV->X()   ,
-                                                                daughterLV->Y()   ,
-                                                                daughterLV->Z()   );
-                
-                KineticEnergy   = daughterLV->E()-m_Masses[i] ;
-                
-                Particle daughterParticle( m_DaughterNuclei[i],
-                                          -1,
-                                          KineticEnergy*GeV,
-                                          daughterDirection.unit(),
-                                          decayingParticle.GetParticlePosition(),
-                                          m_shoot[i]);
-                m_ParticleStack->AddParticleToStack(daughterParticle);
-            }
-        }
-    }
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorParticleDecay::SetTarget(Target* Target){
-    m_Target = Target;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorParticleDecay::SetDecay(vector<string> DaughterName, vector<int> shoot, vector<double> ExcitationEnergy, string CSPath, string CSName){
-    m_CrossSectionPath=CSPath;
-    m_CrossSectionName=CSName;
-    
-    // Check the validity of the given data:
-    if (DaughterName.size() != shoot.size() || (DaughterName.size() != ExcitationEnergy.size() && ExcitationEnergy.size()!=0) ) {
-        cout << "ERROR : Missmatching information: Getting out " << endl ;
-        exit(1);
-    }
-    
-    if ( DaughterName.size() != 2 && CSPath!="TGenPhaseSpace" ) {
-        cout << "ERROR : Missmatching information (User CS allowed only for two body decay): Getting out " << endl ;
-        exit(1);
-    }
-    
-    m_shoot = shoot ;
-    m_ExcitationEnergy= ExcitationEnergy ;
-    
-    // If the Excitation Energy Token was omitted, then it is set to zero
-    if(m_ExcitationEnergy.size()==0)
-        for (unsigned int i = 0 ; i < DaughterName.size(); i++) {
-            m_ExcitationEnergy.push_back(0);
-        }
-    
-    // used check for mass and charge conservation
-    Nucleus*  myNucleus = new Nucleus(m_MotherNucleiName);
-    int InitialCharge = myNucleus->GetZ() ; int FinalCharge = 0 ;
-    int InitialMass   = myNucleus->GetA() ; int FinalMass   = 0 ;
-    delete myNucleus;
-    for (unsigned int i = 0 ; i< DaughterName.size(); i++) {
-        if(DaughterName[i] == "p" || DaughterName[i] == "proton" || DaughterName[i] == "1H"){
-            m_DaughterNuclei.push_back(G4ParticleTable::GetParticleTable()->FindParticle("proton"));
-            FinalMass++;FinalCharge++;
-        }
-        
-        else if (DaughterName[i] == "n" || DaughterName[i] == "neutron"){
-            m_DaughterNuclei.push_back(G4ParticleTable::GetParticleTable()->FindParticle("neutron"));
-            FinalMass++;
-        }
-        
-        else{
-            Nucleus*  myNucleus1 = new Nucleus(DaughterName[i]);
-            m_DaughterNuclei.push_back(G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(myNucleus1->GetZ(),
-                                                                                                  myNucleus1->GetA(),
-                                                                                                  m_ExcitationEnergy[i]*MeV));
-            FinalMass+=myNucleus1->GetA();
-            FinalCharge+=myNucleus1->GetZ();
-            delete myNucleus1;
-        }
-    }
-    
-    // Check mass and charge conservation
-    if (InitialMass!=FinalMass || InitialCharge!=FinalCharge) {
-        G4cout << "ERROR: Mass and charge are not conserved." << G4endl;
-        exit(1);
-    }
-    
-    m_DaughterName = DaughterName;
-    
-    m_DifferentialCrossSection = CSPath;
-    if(CSPath!="TGenPhaseSpace") {
-        if(m_CrossSectionPath!="_void_"){
-            m_CrossSectionHist = Read1DProfile(m_CrossSectionPath,m_CrossSectionName);
-            TF1* sinus = new TF1("sinus","1/sin(x*3.141592653589793/180.)",0,180);
-            m_CrossSectionHist->Divide(sinus,1);
-            delete sinus;
-        }
-        else{
-            int offset = 0;
-            while(gDirectory->FindObjectAny(Form("_particlevoid_%i",offset))!=0)
-                ++offset;
-            
-            m_CrossSectionHist = new TH1F(Form("_particlevoid_%i",offset),Form("_particlevoid_%i",offset),180,0,180);
-            for(unsigned int i = 0 ; i < 180 ; i++)
-                m_CrossSectionHist->Fill(i);
-            
-            TF1* sinus = new TF1("sinus","1/sin(x*3.141592653589793/180.)",0,180);
-            m_CrossSectionHist->Divide(sinus,1);
-            delete sinus;
-        }
-        
-    }
-    
-    
-    else{
-        // Set up the array of masses
-        m_Masses = new double[m_DaughterNuclei.size()];
-        
-        // Mass of the daugther nuclei are set once
-        for (unsigned int i = 0 ; i < m_DaughterNuclei.size(); i++) {
-            m_Masses[i] = m_DaughterNuclei[i]->GetPDGMass()/GeV;
-        }
-        
-    }
-    
-    // Change the name of the decaying nucleus to G4 standard
-    m_MotherNucleiName = m_ParticleStack->ChangeNameToG4Standard(m_MotherNucleiName);
-}
diff --git a/NPSimulation/EventGenerator/EventGeneratorParticleDecay.hh b/NPSimulation/EventGenerator/EventGeneratorParticleDecay.hh
deleted file mode 100644
index dac80080653a6966f5675c2fbd857356862e4d71..0000000000000000000000000000000000000000
--- a/NPSimulation/EventGenerator/EventGeneratorParticleDecay.hh
+++ /dev/null
@@ -1,88 +0,0 @@
-#ifndef EventGeneratorParticleDecay_H
-#define EventGeneratorParticleDecay_H
-/*****************************************************************************
- * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
- *                                                                           *
- * Creation Date  : May 2012                                                 *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This event Generator is used to simulated the particle decay of nuclei   *
- * generated by previous event generator. Multiple cases are supported:      *
- *  - Only one particle is emmited, in this case a Cross section can be given*
- *  - If Multiple particle are emitted, a Phase Space generator is used      *
- *                                                                           *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *                                                                           *
- *                                                                           *
- *                                                                           *
- *****************************************************************************/
-
-// STL
-#include <string>
-#include <iostream>
-using namespace std;
-
-// ROOT
-#include "TGenPhaseSpace.h"
-#include "TH1F.h"
-
-// NPSimulation
-#include "VEventGenerator.hh"
-#include "Target.hh"
-#include "ParticleStack.hh"
-
-//NPL
-#include "NPFunction.h"
-#include "NPInputParser.h"
-using namespace NPL;
-
-// Geant4
-#include "G4ParticleDefinition.hh"
-
-class EventGeneratorParticleDecay : public NPS::VEventGenerator{
-public: // Constructor and destructor
-  EventGeneratorParticleDecay();
-  ~EventGeneratorParticleDecay();
-  
-public: // Inherit from VEventGenerator class
-  void ReadConfiguration(NPL::InputParser);
-  void GenerateEvent(G4Event*);
-  void SetTarget(Target* Target) ;
-  
-private: // Target Parameter
-  Target* m_Target;
-  
-private: // The decaying nuclei
-         // General used
-  string m_MotherNucleiName;
-  vector<G4ParticleDefinition*> m_DaughterNuclei;
-  vector<string> m_DaughterName;
-  vector<double> m_ExcitationEnergy;
-  vector<int>   m_shoot;
-  
-  // Used for cross section
-  string  m_DifferentialCrossSection;
-  string  m_CrossSectionPath;
-  string  m_CrossSectionName;
-  TH1F*   m_CrossSectionHist;
-  
-  // Used for the phase space
-  TGenPhaseSpace m_TPhaseSpace ;
-  double* m_Masses;
-  
-private: // Pointer to the Particle stack for faster acces
-  ParticleStack* m_ParticleStack;
-public: // Managing the decay
-        // Set everything for the decay
-  void SetDecay(vector<string> DaughterName, vector<int> shoot, vector<double> ExcitationEnergy, string CSPath , string CSName);
-};
-#endif
diff --git a/NPSimulation/EventGenerator/EventGeneratorTwoBodyReaction.cc b/NPSimulation/EventGenerator/EventGeneratorTwoBodyReaction.cc
deleted file mode 100644
index 60b467d9e5bad4bebcfb67a5d018b98ed428982a..0000000000000000000000000000000000000000
--- a/NPSimulation/EventGenerator/EventGeneratorTwoBodyReaction.cc
+++ /dev/null
@@ -1,195 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
- *                                                                           *
- * Creation Date  : January 2009                                             *
- * Last update    : January 2013                                             *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This event Generator is used to simulated two body two body reaction.    *
- *  A Relativistic computation is performed to determine angle and energy of *
- *   the different particle, knowing the ThetaCM angle given by a cross      *
- *   section shoot. Eleastic scattering can also be simulated.               *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *    + 20/01/2011: Add support for excitation energy for light ejectile     *
- *                  (N. de Sereville)                                        *
- *    + 23/01/2013: Class change name (ild name EventGeneratorTransfert)     *
- *                  (A. MATTA)                                               *
- *                                                                           *
- *****************************************************************************/
-// C++ headers
-#include <iostream>
-#include <fstream>
-#include <limits>
-
-// G4 header defining G4 types
-#include "globals.hh"
-
-// G4 headers
-#include "G4ParticleTable.hh"
-#include "G4IonTable.hh"
-#include "G4RotationMatrix.hh"
-
-// G4 headers including CLHEP headers
-// for generating random numbers
-#include "Randomize.hh"
-
-// NPTool headers
-#include "EventGeneratorTwoBodyReaction.hh"
-#include "RootOutput.h"
-
-using namespace CLHEP;
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventGeneratorTwoBodyReaction::EventGeneratorTwoBodyReaction()
-:  m_ShootLight(0),
-m_ShootHeavy(0),
-m_Target(0),
-m_Reaction(new Reaction)
-{
-  //------------- Default Constructor -------------
-  m_ParticleStack= ParticleStack::getInstance();
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorTwoBodyReaction::SetTarget(Target* Target) {
-  if (Target != 0) {
-    m_Target = Target;
-  }
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-EventGeneratorTwoBodyReaction::~EventGeneratorTwoBodyReaction(){
-  //------------- Default Destructor ------------
-  delete m_Reaction;
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorTwoBodyReaction::InitializeRootOutput(){
-  
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorTwoBodyReaction::Print() const{
-  
-}
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//    Inherit from VEventGenerator
-
-void EventGeneratorTwoBodyReaction::ReadConfiguration(NPL::InputParser parser){
-  m_Reaction->ReadConfigurationFile(parser);
-  m_ShootLight = m_Reaction->GetShoot3();
-  m_ShootHeavy = m_Reaction->GetShoot4();;
-
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorTwoBodyReaction::GenerateEvent(G4Event*){
-  //////////////////////////////////////////////////
-  //////Define the kind of particle to shoot////////
-  //////////////////////////////////////////////////
-  // Nucleus 3
-  G4int LightZ = m_Reaction->GetNucleus3().GetZ() ;
-  G4int LightA = m_Reaction->GetNucleus3().GetA() ;
-  
-  G4ParticleDefinition* LightName
-  = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(LightZ, LightA, m_Reaction->GetExcitation3()*MeV);
-  
-  // Nucleus 4
-  G4int HeavyZ = m_Reaction->GetNucleus4().GetZ() ;
-  G4int HeavyA = m_Reaction->GetNucleus4().GetA() ;
-  
-  // Generate the excitation energy if a distribution is given
-  m_Reaction->ShootRandomExcitationEnergy();
-
-  G4ParticleDefinition* HeavyName
-  = G4ParticleTable::GetParticleTable()->GetIonTable()->GetIon(HeavyZ, HeavyA, m_Reaction->GetExcitation4()*MeV);
-  
-  // Get the beam particle form the Particle Stack
-  Particle BeamParticle = m_ParticleStack->SearchAndRemoveParticle(m_BeamName);
-  m_Reaction->SetBeamEnergy(BeamParticle.GetParticleKineticEnergy());
-  
-  G4double Beam_theta = BeamParticle.GetParticleMomentumDirection().theta();
-  G4double Beam_phi = BeamParticle.GetParticleMomentumDirection().phi();
-  
-  //////////////////////////////////////////////////////////
-  ///// Build rotation matrix to go from the incident //////
-  ///// beam frame to the "world" frame               //////
-  //////////////////////////////////////////////////////////
-  G4ThreeVector col1(cos(Beam_theta) * cos(Beam_phi),
-                     cos(Beam_theta) * sin(Beam_phi),
-                     -sin(Beam_theta));
-  G4ThreeVector col2(-sin(Beam_phi),
-                     cos(Beam_phi),
-                     0);
-  G4ThreeVector col3(sin(Beam_theta) * cos(Beam_phi),
-                     sin(Beam_theta) * sin(Beam_phi),
-                     cos(Beam_theta));
-  G4RotationMatrix BeamToWorld(col1, col2, col3);
-  
-  /////////////////////////////////////////////////////////////////
-  ///// Angles for emitted particles following Cross Section //////
-  ///// Angles are in the beam frame                         //////
-  /////////////////////////////////////////////////////////////////
-  
-  // Angles
-  // Shoot and Set a Random ThetaCM
-  G4double ThetaCM = m_Reaction->ShootRandomThetaCM();
-  G4double phi     = RandFlat::shoot() * 2. * pi;
- 
-  //////////////////////////////////////////////////
-  /////  Momentum and angles from  kinematics  /////
-  /////  Angles are in the beam frame          /////
-  //////////////////////////////////////////////////
-  // Variable where to store results
-  G4double ThetaLight, EnergyLight, ThetaHeavy, EnergyHeavy;
-  
-  // Compute Kinematic using previously defined ThetaCM
-  m_Reaction->KineRelativistic(ThetaLight, EnergyLight, ThetaHeavy, EnergyHeavy);
-  
-  // Momentum in beam frame for light particle
-  G4ThreeVector momentum_kineLight_beam(sin(ThetaLight) * cos(phi),
-                                        sin(ThetaLight) * sin(phi),
-                                        cos(ThetaLight));
-  
-  // Momentum in beam frame for heavy particle
-  G4ThreeVector momentum_kineHeavy_beam(sin(ThetaHeavy) * cos(phi+pi),
-                                        sin(ThetaHeavy) * sin(phi+pi),
-                                        cos(ThetaHeavy));
-  
-  //////////////////////////////////////////////////
-  ///////// Set up everything for shooting /////////
-  //////////////////////////////////////////////////
-  // Case of light particle
-  // Particle direction
-  // Kinematical angles in the beam frame are transformed
-  // to the "world" frame
-  G4ThreeVector momentum_kine_world = BeamToWorld * momentum_kineLight_beam;
-  //Add the particle to the particle stack
-  Particle LightParticle(LightName, ThetaCM , EnergyLight,momentum_kine_world, BeamParticle.GetParticlePosition(), m_ShootLight);
-  m_ParticleStack->AddParticleToStack(LightParticle);
-  
-  // Case of heavy particle
-  // Particle direction
-  // Kinematical angles in the beam frame are transformed
-  // to the "world" frame
-  momentum_kine_world = BeamToWorld * momentum_kineHeavy_beam;
-  Particle HeavyParticle(HeavyName, ThetaCM + M_PI, EnergyHeavy,momentum_kine_world, BeamParticle.GetParticlePosition(), m_ShootHeavy);
-  //Add the particle to the particle stack
-  m_ParticleStack->AddParticleToStack(HeavyParticle);
-}
diff --git a/NPSimulation/EventGenerator/EventGeneratorTwoBodyReaction.hh b/NPSimulation/EventGenerator/EventGeneratorTwoBodyReaction.hh
deleted file mode 100644
index fc0dd9cd32d8e45c82838b69d927be178e5a5a45..0000000000000000000000000000000000000000
--- a/NPSimulation/EventGenerator/EventGeneratorTwoBodyReaction.hh
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef EventGeneratorTwoBodyReaction_H
-#define EventGeneratorTwoBodyReaction_H
-/*****************************************************************************
- * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
- *                                                                           *
- * Creation Date  : January 2009                                             *
- * Last update    : January 2013                                             *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This event Generator is used to simulated two body two body reaction.    *
- *  A Relativistic computation is performed to determine angle and energy of *
- *   the different particle, knowing the ThetaCM angle given by a cross      *
- *   section shoot. Eleastic scattering can also be simulated.               *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *    + 20/01/2011: Add support for excitation energy for light ejectile     *
- *                  (N. de Sereville)                                        *
- *    + 23/01/2013: Class change name (ild name EventGeneratorTransfert)     *
- *                  (A. MATTA)                                               *
- *                                                                           *
- *                                                                           *
- *****************************************************************************/
-// C++ headers
-#include <string>
-
-// NPSimulation
-#include "VEventGenerator.hh"
-#include "Target.hh"
-#include "Particle.hh"
-#include "ParticleStack.hh"
-
-// NPLib header
-#include "NPReaction.h"
-
-using namespace std;
-using namespace CLHEP;
-using namespace NPL ;
-
-
-class EventGeneratorTwoBodyReaction : public NPS::VEventGenerator
-{
-   public:     // Constructors and Destructors
-      // Default constructor used to allocate memory
-      EventGeneratorTwoBodyReaction();
-
-      // Default Destructor
-      virtual ~EventGeneratorTwoBodyReaction();
-
-
-   public: // Inherit from VEventGenerator class
-      void ReadConfiguration(NPL::InputParser);
-      void GenerateEvent(G4Event*);
-      void SetTarget(Target* Target) ;
-
-
-   private: // Particle Shoot Option
-      ParticleStack* m_ParticleStack;
-      bool m_ShootLight;
-      bool m_ShootHeavy;
-
-
-   private: // Target Parameter
-      Target* m_Target;
-
-
-   private: // Reaction and CrossSection Shoot
-      Reaction* m_Reaction;
-
-
-   private: // Beam Parameters
-        string m_BeamName;
-
-      // Other methods
-      void Print() const;
-      void InitializeRootOutput();
-};
-
-#endif
diff --git a/NPSimulation/Process/BeamReaction.cc b/NPSimulation/Process/BeamReaction.cc
index b7f7c4e521a745b1de717ea86ba4fe710ea048bc..b7cf24e0dad55050812cfa12de1bccc001f2f7d5 100644
--- a/NPSimulation/Process/BeamReaction.cc
+++ b/NPSimulation/Process/BeamReaction.cc
@@ -38,10 +38,6 @@ G4VFastSimulationModel(modelName, envelope) {
     ReadConfiguration();
     m_PreviousEnergy=0 ;
     m_PreviousLength=0 ;
-    m_ReactionConditions = new TReactionConditions();
-    AttachReactionConditions();
-    if(!RootOutput::getInstance()->GetTree()->FindBranch("ReactionConditions"))
-        RootOutput::getInstance()->GetTree()->Branch("ReactionConditions","TReactionConditions",&m_ReactionConditions);
 }
 
 
@@ -64,16 +60,22 @@ void NPS::BeamReaction::AttachReactionConditions(){
 
 ////////////////////////////////////////////////////////////////////////////////
 void NPS::BeamReaction::ReadConfiguration(){
-    NPL::InputParser input(NPOptionManager::getInstance()->GetReactionFile());
-    m_Reaction.ReadConfigurationFile(input);
-    m_BeamName=NPL::ChangeNameToG4Standard(m_Reaction.GetNucleus1().GetName());
-    if(m_Reaction.GetNucleus3().GetName()!=""){
-        m_active = true;
-    }
-    else{
-        m_active = false;
-        
-    }
+  NPL::InputParser input(NPOptionManager::getInstance()->GetReactionFile());
+  m_Reaction.ReadConfigurationFile(input);
+  m_BeamName=NPL::ChangeNameToG4Standard(m_Reaction.GetNucleus1()->GetName());
+
+ if(m_Reaction.GetNucleus3()->GetName()!=""){
+    m_active = true;
+    m_ReactionConditions = new TReactionConditions();
+    AttachReactionConditions();
+    if(!RootOutput::getInstance()->GetTree()->FindBranch("ReactionConditions"))
+      RootOutput::getInstance()->GetTree()->Branch("ReactionConditions","TReactionConditions",&m_ReactionConditions);
+
+  }
+  else{
+    m_active = false;
+
+  }
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -98,15 +100,17 @@ G4bool NPS::BeamReaction::ModelTrigger(const G4FastTrack& fastTrack) {
     G4ThreeVector P = fastTrack.GetPrimaryTrackLocalPosition();
     G4VSolid* solid =
     fastTrack.GetPrimaryTrack()->GetVolume()->GetLogicalVolume()->GetSolid();
-    double in = solid->DistanceToOut(P,V);
-    double out = solid->DistanceToOut(P,-V);
-    double ratio  = in / (out+in) ;
-    
-    if(out == 0){// first step of current event
-        rand = G4RandFlat::shoot();
-        m_PreviousLength = m_StepSize ;
-        m_PreviousEnergy = PrimaryTrack->GetKineticEnergy() ;
-        shoot = true;
+  double in = solid->DistanceToOut(P,V);
+  double out = solid->DistanceToOut(P,-V);
+  double ratio  = in / (out+in) ;
+  
+  if(out == 0){// first step of current event
+      rand = G4RandFlat::shoot();
+      m_PreviousLength = m_StepSize ;
+      m_PreviousEnergy = PrimaryTrack->GetKineticEnergy() ;
+      // Clear Previous Event
+      m_ReactionConditions->Clear();
+      shoot = true;
     }
     
     else if(in==0){// last step
@@ -140,9 +144,7 @@ G4bool NPS::BeamReaction::ModelTrigger(const G4FastTrack& fastTrack) {
 ////////////////////////////////////////////////////////////////////////////////
 void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep) {
     
-    // Clear Previous Event
-    m_ReactionConditions->Clear();
-    
+   
     // Get the track info
     const G4Track* PrimaryTrack = fastTrack.GetPrimaryTrack();
     G4ThreeVector pdirection = PrimaryTrack->GetMomentum().unit();
@@ -171,28 +173,37 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep)
     fastStep.KillPrimaryTrack();
     fastStep.SetPrimaryTrackPathLength(0.0);
     
-    //////////////////////////////////////////////////
+    /////////////////////////////////////////////////
     //////Define the kind of particle to shoot////////
     //////////////////////////////////////////////////
     
     // Nucleus 3
-    int LightZ = m_Reaction.GetNucleus3().GetZ() ;
-    int LightA = m_Reaction.GetNucleus3().GetA() ;
+    int LightZ = m_Reaction.GetNucleus3()->GetZ() ;
+    int LightA = m_Reaction.GetNucleus3()->GetA() ;
     static G4IonTable* IonTable = G4ParticleTable::GetParticleTable()->GetIonTable();
-    
-    G4ParticleDefinition* LightName
-    = IonTable->GetIon(LightZ, LightA, m_Reaction.GetExcitation3()*MeV);
-    
+   
+    G4ParticleDefinition* LightName;
+
+    if(m_Reaction.GetUseExInGeant4())
+     LightName = IonTable->GetIon(LightZ, LightA, m_Reaction.GetExcitation3()*MeV);
+    else 
+     LightName = IonTable->GetIon(LightZ, LightA);
+
     // Nucleus 4
-    G4int HeavyZ = m_Reaction.GetNucleus4().GetZ() ;
-    G4int HeavyA = m_Reaction.GetNucleus4().GetA() ;
+    G4int HeavyZ = m_Reaction.GetNucleus4()->GetZ() ;
+    G4int HeavyA = m_Reaction.GetNucleus4()->GetA() ;
     
     // Generate the excitation energy if a distribution is given
     m_Reaction.ShootRandomExcitationEnergy();
-    
+      
     // Use to clean up the IonTable in case of the Ex changing at every event
-    G4ParticleDefinition* HeavyName
-    = IonTable->GetIon(HeavyZ, HeavyA, m_Reaction.GetExcitation4()*MeV);
+    G4ParticleDefinition* HeavyName;
+
+    if(m_Reaction.GetUseExInGeant4())
+      HeavyName = IonTable->GetIon(HeavyZ, HeavyA, m_Reaction.GetExcitation4()*MeV);
+    else
+      HeavyName = IonTable->GetIon(HeavyZ, HeavyA);
+
     // Set the Energy of the reaction
     m_Reaction.SetBeamEnergy(energy);
     
@@ -216,7 +227,6 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep)
     m_ReactionConditions->SetBeamEmittancePhi(PrimaryTrack->GetMomentumDirection().phi()/deg);
     m_ReactionConditions->SetBeamEmittanceThetaX(PrimaryTrack->GetMomentumDirection().angle(U)/deg);
     m_ReactionConditions->SetBeamEmittancePhiY(PrimaryTrack->GetMomentumDirection().angle(V)/deg);
-    
     //////////////////////////////////////////////////////////
     ///// Build rotation matrix to go from the incident //////
     ///// beam frame to the "world" frame               //////
@@ -268,12 +278,16 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep)
     
     
     // Emitt secondary
-    G4DynamicParticle particle3(LightName,momentum_kine3_world,Energy3);
-    fastStep.CreateSecondaryTrack(particle3, localPosition, time);
-    
-    G4DynamicParticle particle4(HeavyName,momentum_kine4_world,Energy4);
-    fastStep.CreateSecondaryTrack(particle4, localPosition, time);
-    
+    if(m_Reaction.GetShoot3()){
+      G4DynamicParticle particle3(LightName,momentum_kine3_world,Energy3);
+      fastStep.CreateSecondaryTrack(particle3, localPosition, time);
+    }
+
+    if(m_Reaction.GetShoot4()){
+      G4DynamicParticle particle4(HeavyName,momentum_kine4_world,Energy4);
+      fastStep.CreateSecondaryTrack(particle4, localPosition, time);
+    }
+
     // Reinit for next event
     m_PreviousEnergy=0 ;
     m_PreviousLength=0 ;
@@ -290,8 +304,10 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep)
     // Energy 3 and 4 //
     m_ReactionConditions->SetKineticEnergy(Energy3);
     m_ReactionConditions->SetKineticEnergy(Energy4);
-    // ThetaCM //
+    // ThetaCM and Ex//
     m_ReactionConditions->SetThetaCM(m_Reaction.GetThetaCM()/deg);
+    m_ReactionConditions->SetExcitationEnergy3(m_Reaction.GetExcitation3());
+    m_ReactionConditions->SetExcitationEnergy4(m_Reaction.GetExcitation4());
     // Momuntum X 3 and 4 //
     m_ReactionConditions->SetMomentumDirectionX(momentum_kine3_world.x());
     m_ReactionConditions->SetMomentumDirectionX(momentum_kine4_world.x());
@@ -301,4 +317,5 @@ void NPS::BeamReaction::DoIt(const G4FastTrack& fastTrack,G4FastStep& fastStep)
     // Momuntum Z 3 and 4 //
     m_ReactionConditions->SetMomentumDirectionZ(momentum_kine3_world.z());
     m_ReactionConditions->SetMomentumDirectionZ(momentum_kine4_world.z());
+
 }
diff --git a/NPSimulation/Process/G4DETransport.cc b/NPSimulation/Process/G4DETransport.cc
index 2266b7e512a4b1266658a469ff22985e22dfa031..1f501a7bc8e1e420c4ecf3b716c3d21e3e53f318 100644
--- a/NPSimulation/Process/G4DETransport.cc
+++ b/NPSimulation/Process/G4DETransport.cc
@@ -123,23 +123,23 @@ G4DETransport::PostStepDoIt(const G4Track& aTrack, const G4Step& aStep)
     
     G4MaterialPropertiesTable* aMaterialPropertiesTable =
     aMaterial->GetMaterialPropertiesTable();
-    if (!aMaterialPropertiesTable)
-        return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
-    
-    
-    if(!aMaterialPropertiesTable->ConstPropertyExists("DE_PAIRENERGY") ||
-       !aMaterialPropertiesTable->ConstPropertyExists("DE_TRANSVERSALSPREAD") ||
-       !aMaterialPropertiesTable->ConstPropertyExists("DE_LONGITUDINALSPREAD") ||
-       !aMaterialPropertiesTable->ConstPropertyExists("DE_DRIFTSPEED") )
-        return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
-    
-    
-    // Electron follow the field direction
-    // The field direction is taken from the field manager
-    static G4double* fieldArr = new G4double[6];
-    G4double  Point[4]={x0.x(),x0.y(),x0.z(),t0};
-    G4FieldManager* fMng = pPreStepPoint->GetTouchableHandle()->GetVolume()->GetLogicalVolume()->
-    GetFieldManager();
+  
+  if (!aMaterialPropertiesTable)
+    return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
+  
+
+  if(!aMaterialPropertiesTable->ConstPropertyExists("DE_PAIRENERGY") ||
+     !aMaterialPropertiesTable->ConstPropertyExists("DE_TRANSVERSALSPREAD") ||
+     !aMaterialPropertiesTable->ConstPropertyExists("DE_LONGITUDINALSPREAD") ||
+     !aMaterialPropertiesTable->ConstPropertyExists("DE_DRIFTSPEED") )
+    return G4VDiscreteProcess::PostStepDoIt(aTrack, aStep);
+ 
+
+  // Electron follow the field direction
+  // The field direction is taken from the field manager
+  static G4double* fieldArr = new G4double[6];
+  G4double  Point[4]={x0.x(),x0.y(),x0.z(),t0};
+  G4FieldManager* fMng = pPreStepPoint->GetTouchableHandle()->GetVolume()->GetLogicalVolume()->GetFieldManager();
     
     G4ElectroMagneticField* field = (G4ElectroMagneticField*)fMng->GetDetectorField();
     field->GetFieldValue(Point,fieldArr) ;
diff --git a/NPSimulation/Process/PhysicsList.cc b/NPSimulation/Process/PhysicsList.cc
index c830d8b1ce8b5b2b6db62ee163be462f1a2b0d4e..ed1a5bfacfb34a3490a2c58deedddd29c3a9f166 100644
--- a/NPSimulation/Process/PhysicsList.cc
+++ b/NPSimulation/Process/PhysicsList.cc
@@ -38,13 +38,21 @@
 #include "G4ProcessManager.hh"
 #include "G4FastSimulationManagerProcess.hh"
 #include "G4StepLimiter.hh"
-#include "menate_R.hh"
+#include "G4BraggIonGasModel.hh"
+#include "G4BetheBlochIonGasModel.hh"
+#include "G4IonFluctuations.hh"
+#include "G4IonParametrisedLossModel.hh"
+#include "G4UniversalFluctuation.hh"
+
+#include "G4PAIModel.hh"
+#include "G4PAIPhotModel.hh"
+
 /////////////////////////////////////////////////////////////////////////////
 PhysicsList::PhysicsList() : G4VUserPhysicsList(){
     m_EmList = "Option4";
     defaultCutValue = 1*mm;//0.2*mm;
     opticalPhysicsList = NULL;
-    driftElectronPhysicsList = NULL; 
+    driftElectronPhysicsList = NULL;
     ReadConfiguration("PhysicsListOption.txt");
     G4LossTableManager::Instance();
     SetVerboseLevel(0);
@@ -64,23 +72,31 @@ PhysicsList::PhysicsList() : G4VUserPhysicsList(){
     // Using the more accurate option4
     
     emPhysicsList=NULL;
-    if(m_EmList == "Option4")
+    if(m_EmList == "Option4"){
         emPhysicsList = new G4EmStandardPhysics_option4();
+        cout << "//// Using G4EmStandardPhysics_option4 Physics List ////" << endl;
+    }
     
-    else if(m_EmList== "Livermore")
+    else if(m_EmList== "Livermore"){
         emPhysicsList = new G4EmLivermorePhysics();
+        cout << "//// Using G4EmLivermorePhysics Physics List ////" << endl;
+    }
     
-    else if( m_EmList == "Penelope")
+    else if( m_EmList == "Penelope"){
         emPhysicsList = new G4EmPenelopePhysics();
+        cout << "//// Using G4EmPenelopePhysics Physics List ////" << endl;
+    }
     
     else{
         std::cout << "\r\033[1;31mERROR: User given physics list " << m_EmList << " is not supported, option are Option4 Livermore Penelope\033[0m" <<std::endl;
         exit(1);
     }
+    emConfig = G4LossTableManager::Instance()->EmConfigurator();
     
     // Hadronic physics
     if(m_IonBinaryCascadePhysics){
         m_PhysList["IonBinaryCascadePhysics"] = new G4IonBinaryCascadePhysics();
+        cout << "//// Using G4IonBinaryCascadePhysics Physics List ////" << endl;
     }
     if(m_EmExtraPhysics)
         m_PhysList["EmExtraPhysics"]=new G4EmExtraPhysics();
@@ -88,22 +104,30 @@ PhysicsList::PhysicsList() : G4VUserPhysicsList(){
     if(m_HadronElasticPhysics){
         m_PhysList["G4HadronElasticPhysics"]=new G4HadronElasticPhysics();
         m_PhysList["G4IonElasticPhysics"]=new G4IonElasticPhysics();
+        cout << "//// Using G4HadronElasticPhysics Physics List ////" << endl;
+        cout << "//// Using G4IonElasticPhysics Physics List ////" << endl;
     }
     
-    if(m_NPIonInelasticPhysics)
+    if(m_NPIonInelasticPhysics){
         m_PhysList["NPIonInelasticPhysics"]=new NPIonIonInelasticPhysic();
+        cout << "//// Using NPIonIonInelasticPhysic Physics List ////" << endl;
+    }
     
-    if(m_StoppingPhysics)
+    if(m_StoppingPhysics){
         m_PhysList["StoppingPhysics"]=new G4StoppingPhysics();
+        cout << "//// Using G4StoppingPhysics Physics List ////" << endl;
+    }
     
     if(m_HadronPhysicsINCLXX){
         m_PhysList["HadronPhysicsINCLXX"] = new G4HadronPhysicsINCLXX();
         m_PhysList["IonPhysicsINCLXX"] = new G4IonINCLXXPhysics();
+        cout << "//// Using INCLXX Physics List ////" << endl;
     }
     
     if(m_HadronPhysicsQGSP_BIC_HP){
 #if NPS_GEANT4_VERSION_MAJOR > 9
         m_PhysList["HadronPhysicsQGSP_BIC_HP"] = new G4HadronPhysicsQGSP_BIC_HP();
+        cout << "//// Using QGSP_BIC_HP Physics List ////" << endl;
         
 #else
         std::cout << "\r\032[1;31m Warning: physics list HadronPhysicsQGSP_BIC_HP require Geant4 10, process not activated \033[0m" <<std::endl;
@@ -116,12 +140,28 @@ PhysicsList::PhysicsList() : G4VUserPhysicsList(){
         opticalPhysicsList->SetScintillationYieldFactor(0.1);
         opticalPhysicsList->SetTrackSecondariesFirst(kScintillation,true);
         opticalPhysicsList->SetTrackSecondariesFirst(kCerenkov,true);
+        
+        cout << "//// Using Optical Photon Physics List ////" << endl;
     }
- 
+    
     // Drift electron for gazeous detector simulation
     if(m_DriftElectronPhysics){
         driftElectronPhysicsList = new G4DriftElectronPhysics(0);
         driftElectronPhysicsList->SetMaxNumDriftElectronPerStep(1e6);
+        cout << "//// Using Drift Electron Physics List ////" << endl;
+    }
+    if(m_IonGasModels){
+        AddIonGasModels();
+        cout << "//// Using Ion Gas Model Physics List ////" << endl;
+    }
+    
+    if(m_pai){
+        AddPAIModel("pai");
+        cout << "//// Using PAI Model Physics List ////" << endl;
+    }
+    if(m_pai_photon){
+        AddPAIModel("pai_photon");
+        cout << "//// Using PAI PHOTON Model Physics List ////" << endl;
     }
     
     // Decay physics
@@ -153,7 +193,9 @@ void PhysicsList::ReadConfiguration(std::string filename){
     m_HadronPhysicsQGSP_BIC_HP = 0;
     m_HadronPhysicsINCLXX = 0;
     m_Decay = 0;
-		m_Menate_R = 0;
+    m_IonGasModels = 0;
+    m_pai= 0;
+    m_pai_photon= 0;
     
     std::ifstream file(filename.c_str());
     if(!file.is_open()){
@@ -192,8 +234,12 @@ void PhysicsList::ReadConfiguration(std::string filename){
             m_HadronPhysicsINCLXX= value;
         else if (name == "Decay")
             m_Decay = value;
-				else if (name == "Menate_R")
-   					m_Menate_R = value;
+        else if (name == "IonGasModels")
+            m_IonGasModels= value;
+        else if (name == "pai")
+            m_pai = value;
+        else if (name == "pai_photon")
+            m_pai_photon = value;
         else
             std::cout <<"WARNING: Physics List Token '" << name << "' unknown. Token is ignored." << std::endl;
     }
@@ -210,6 +256,67 @@ void PhysicsList::ReadConfiguration(std::string filename){
 PhysicsList::~PhysicsList(){
 }
 
+/////////////////////////////////////////////////////////////////////////////
+void PhysicsList::AddIonGasModels()
+{
+    G4ParticleTable::G4PTblDicIterator* particleIterator = G4ParticleTable::GetParticleTable()->GetIterator();
+    particleIterator->reset();
+    while ((*particleIterator)())
+    {
+        G4ParticleDefinition* particle = particleIterator->value();
+        G4String partname = particle->GetParticleName();
+        if(partname == "p" || partname == "proton"  || partname == "alpha" || partname == "He3" || partname == "GenericIon") {
+            G4BraggIonGasModel* mod1 = new G4BraggIonGasModel();
+            G4BetheBlochIonGasModel* mod2 = new G4BetheBlochIonGasModel();
+            G4double eth = 2.*MeV*particle->GetPDGMass()/proton_mass_c2;
+            emConfig->SetExtraEmModel(partname,"ionIoni",mod1,"",0.0,eth,new G4IonFluctuations());
+            emConfig->SetExtraEmModel(partname,"ionIoni",mod2,"",eth,100*TeV,new G4UniversalFluctuation());
+        }
+    }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+void PhysicsList::AddPAIModel(const G4String& modname)
+{
+    G4ParticleTable::G4PTblDicIterator* particleIterator = G4ParticleTable::GetParticleTable()->GetIterator();
+    particleIterator->reset();
+    while ((*particleIterator)())
+    {
+        G4ParticleDefinition* particle = particleIterator->value();
+        G4String partname = particle->GetParticleName();
+        if(partname == "e-" || partname == "e+") {
+            NewPAIModel(particle, modname, "eIoni");
+            
+        } else if(partname == "mu-" || partname == "mu+") {
+            NewPAIModel(particle, modname, "muIoni");
+            
+        } else if(partname == "proton" ||
+                  partname == "pi+" ||
+                  partname == "pi-"
+                  ) {
+            NewPAIModel(particle, modname, "hIoni");
+        }
+    }
+}
+
+/////////////////////////////////////////////////////////////////////////////
+void PhysicsList::NewPAIModel(const G4ParticleDefinition* part,
+                              const G4String& modname,
+                              const G4String& procname)
+{
+    G4String partname = part->GetParticleName();
+    if(modname == "pai"){
+        G4PAIModel* pai = new G4PAIModel(part,"PAIModel");
+        emConfig->SetExtraEmModel(partname,procname,pai,"GasDetector",0.0,100.*TeV,pai);
+    }
+    
+    else if(modname == "pai_photon") {
+        G4PAIPhotModel* pai = new G4PAIPhotModel(part,"PAIPhotModel");
+        emConfig->SetExtraEmModel(partname,procname,pai,"GasDetector",0.0,100.*TeV,pai);
+    }
+}
+
+
 /////////////////////////////////////////////////////////////////////////////
 void PhysicsList::ConstructParticle(){
     if(m_OpticalPhysics){
@@ -217,11 +324,11 @@ void PhysicsList::ConstructParticle(){
         ((G4VPhysicsConstructor*) opticalPhysicsList)->ConstructParticle();
         
     }
-   
-     if(m_DriftElectronPhysics){
+    
+    if(m_DriftElectronPhysics){
         ((G4VPhysicsConstructor*) driftElectronPhysicsList)->ConstructParticle();
     }
- 
+    
     if(decay_List){
         decay_List -> ConstructParticle();
         radioactiveDecay_List->ConstructParticle();
@@ -274,7 +381,7 @@ void PhysicsList::ConstructProcess(){
     if(driftElectronPhysicsList){
         ((G4VPhysicsConstructor*) driftElectronPhysicsList)->ConstructProcess();
     }
-
+    
     // Hadronic physics
     std::map<std::string,G4VPhysicsConstructor*>::iterator it;
     for(it = m_PhysList.begin(); it!= m_PhysList.end(); it++){
@@ -288,7 +395,7 @@ void PhysicsList::ConstructProcess(){
     em_option.SetAuger(true);
     
     AddParametrisation();
-
+    
     return;
 }
 /////////////////////////////////////////////////////////////////////////////
@@ -296,33 +403,24 @@ void PhysicsList::AddStepMax(){
 }
 /////////////////////////////////////////////////////////////////////////////
 void PhysicsList::AddParametrisation(){
-  G4FastSimulationManagerProcess* BeamReaction =
-			new G4FastSimulationManagerProcess("NPSimulationProcess");
-
-// For 10.3 and higher
-#ifndef theParticleIterator  
-  G4ParticleTable::G4PTblDicIterator* theParticleIterator = GetParticleIterator();
+    G4FastSimulationManagerProcess* BeamReaction =
+    new G4FastSimulationManagerProcess("NPSimulationProcess");
+    
+    // For 10.3 and higher
+#ifndef theParticleIterator
+    G4ParticleTable::G4PTblDicIterator* theParticleIterator = GetParticleIterator();
 #endif
- 
-  theParticleIterator->reset();
-	while ((*theParticleIterator)()){
-		  G4ParticleDefinition* particle = theParticleIterator->value();
-      G4ProcessManager* pmanager = particle->GetProcessManager();
-      std::string name = particle->GetParticleName();
-      pmanager->AddDiscreteProcess(BeamReaction);
-      // Add a Step limiter to the beam particle. 
-      // This will be used to limit the step of the beam in the target
-      pmanager->AddProcess(new G4StepLimiter,-1,-1,5);
-
-			if(m_Menate_R > 0 && name == "neutron") {
-				menate_R* theMenate = new menate_R("menateR_neutron");
-				theMenate->SetMeanFreePathCalcMethod("ORIGINAL");
-				pmanager->AddDiscreteProcess(theMenate);
-				std::cout <<"||--------------------------------------------------||" << std::endl;
-				std::cout <<"         MENATE_R Added to Process Manager            " << std::endl;
-				std::cout <<"||--------------------------------------------------||" << std::endl;
-		}
-  }
+    
+    theParticleIterator->reset();
+    while ((*theParticleIterator)()){
+        G4ParticleDefinition* particle = theParticleIterator->value();
+        G4ProcessManager* pmanager = particle->GetProcessManager();
+        std::string name = particle->GetParticleName();
+        pmanager->AddDiscreteProcess(BeamReaction);
+        // Add a Step limiter to the beam particle.
+        // This will be used to limit the step of the beam in the target
+        pmanager->AddProcess(new G4StepLimiter,-1,-1,5);
+    }
 }
 
 
@@ -344,5 +442,3 @@ void PhysicsList::SetCuts(){
 void PhysicsList::BiasCrossSectionByFactor(double factor){
     factor++;
 }
-
-
diff --git a/NPSimulation/Process/PhysicsList.hh b/NPSimulation/Process/PhysicsList.hh
index 53242275a9ef62540f8a1cae96a0071cce86b5ac..37e6b6da840c410fd0bc38dba3f262a984ee1186 100644
--- a/NPSimulation/Process/PhysicsList.hh
+++ b/NPSimulation/Process/PhysicsList.hh
@@ -84,6 +84,9 @@ class PhysicsList: public G4VUserPhysicsList{
     void AddParametrisation();
     void AddPackage(const G4String& name);
     void BiasCrossSectionByFactor(double factor);
+    void AddIonGasModels();
+    void AddPAIModel(const G4String& modname);
+    void NewPAIModel(const G4ParticleDefinition* part, const G4String& modname,const G4String& procname);
 
   private:
     std::map<std::string,G4VPhysicsConstructor*>  m_PhysList;
@@ -96,7 +99,8 @@ class PhysicsList: public G4VUserPhysicsList{
     G4VPhysicsConstructor* emPhysicsList;
     G4VPhysicsConstructor* decay_List;
     G4VPhysicsConstructor* radioactiveDecay_List;
- 			  
+    G4EmConfigurator* emConfig;
+
   private: // Physics option
     std::string m_EmList;
     double m_IonBinaryCascadePhysics;
@@ -105,12 +109,14 @@ class PhysicsList: public G4VUserPhysicsList{
     double m_HadronElasticPhysics;
     double m_HadronInelasticPhysics;
     double m_StoppingPhysics;
-    double m_OpticalPhysics; 
+    double m_OpticalPhysics;
     double m_DriftElectronPhysics;
     double m_HadronPhysicsQGSP_BIC_HP;
     double m_HadronPhysicsINCLXX;
     double m_Decay;
-  	double m_Menate_R;
+    double m_IonGasModels;
+    double m_pai;
+    double m_pai_photon;
 };
 
 
diff --git a/NPSimulation/Scorers/CMakeLists.txt b/NPSimulation/Scorers/CMakeLists.txt
index 2c28e73ab043081956d0b9eef56959f0e618b6b9..b7924685f0116ec8b86cd7bb96c2dd8ff8d39ee6 100644
--- a/NPSimulation/Scorers/CMakeLists.txt
+++ b/NPSimulation/Scorers/CMakeLists.txt
@@ -1,2 +1,6 @@
+<<<<<<< HEAD
 add_library(NPSScorers SHARED NPSHitsMap.hh CalorimeterScorers.cc  SiliconScorers.cc PhotoDiodeScorers.cc ObsoleteGeneralScorers.cc DriftElectronScorers.cc TPCScorers.cc MDMScorer.cc NeutronDetectorScorers.cc )
+=======
+add_library(NPSScorers SHARED NPSHitsMap.hh CalorimeterScorers.cc InteractionScorers.cc DSSDScorers.cc SiliconScorers.cc PhotoDiodeScorers.cc ObsoleteGeneralScorers.cc DriftElectronScorers.cc TPCScorers.cc MDMScorer.cc )
+>>>>>>> b55c970220ed010e24e3a5ac9f01b96f9c840b16
 target_link_libraries(NPSScorers ${ROOT_LIBRARIES} ${Geant4_LIBRARIES} ${NPLib_LIBRARIES} -lNPInitialConditions -lNPInteractionCoordinates)
diff --git a/NPSimulation/Scorers/CalorimeterScorers.cc b/NPSimulation/Scorers/CalorimeterScorers.cc
index 7557796bf15981905b792e6481b043c701d95701..f02767659316c997393d71521dc731885870f612 100644
--- a/NPSimulation/Scorers/CalorimeterScorers.cc
+++ b/NPSimulation/Scorers/CalorimeterScorers.cc
@@ -21,168 +21,88 @@
  *****************************************************************************/
 #include "CalorimeterScorers.hh"
 #include "G4UnitsTable.hh"
-using namespace CALORIMETERSCORERS ;
+using namespace CalorimeterScorers ;
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-PS_Calorimeter::PS_Calorimeter(G4String name, vector<G4int> NestingLevel,G4int depth)
-:G4VPrimitiveScorer(name, depth),HCID(-1){
-    m_NestingLevel = NestingLevel;
-}
+unsigned int CalorimeterData::CalculateIndex(const vector<unsigned int>& level){
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-PS_Calorimeter::~PS_Calorimeter(){
+  unsigned int size = level.size();
+  unsigned int result = 0;
+  unsigned int multiplier =1;
+  for(unsigned int i = 0 ; i < size ; i++){
+    result+=level[i]*multiplier;
+    multiplier*=1000;
+  } 
+  return result;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){
-    // Contain Energy, Time + as many copy number as nested volume
-    unsigned int mysize = m_NestingLevel.size();
-    G4double* Infos = new G4double[2+mysize];
-    Infos[0] = aStep->GetTotalEnergyDeposit();
-    Infos[1] = aStep->GetPreStepPoint()->GetGlobalTime();
-        
-    for(unsigned int i = 0 ; i < mysize ; i++){
-        Infos[i+2] = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]);
-    }
-    
-    m_Index = 0 ;
-    G4int multiplier = 1;
-    for(unsigned int i = 0 ; i < mysize ; i++){
-        m_Index+= aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i])*multiplier;
-        multiplier*=10;
-    }
-    
-    // Check if the particle has interact before, if yes, add up the energies.
-    map<G4int, G4double**>::iterator it;
-    it= EvtMap->GetMap()->find(m_Index);
-    if(it!=EvtMap->GetMap()->end()){
-        G4double* dummy = *(it->second);
-        Infos[0]+=dummy[0];
-    }
-    
-    EvtMap->set(m_Index, Infos);
-    return TRUE;
+vector<CalorimeterData>::iterator CalorimeterDataVector::find(const unsigned int& index){
+  for(vector<CalorimeterData>::iterator it= m_Data.begin()  ; it !=m_Data.end() ; it++){
+    if((*it).GetIndex()==index)
+      return it;
+  }
+  return m_Data.end();
 }
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_Calorimeter::Initialize(G4HCofThisEvent* HCE){
-    EvtMap = new NPS::HitsMap<G4double*>(GetMultiFunctionalDetector()->GetName(), GetName());
-    if (HCID < 0) {
-        HCID = GetCollectionID(0);
-    }
-    HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_Calorimeter::EndOfEvent(G4HCofThisEvent*){
-}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_Calorimeter::clear(){
-    std::map<G4int, G4double**>::iterator    MapIterator;
-    for (MapIterator = EvtMap->GetMap()->begin() ; MapIterator != EvtMap->GetMap()->end() ; MapIterator++){
-        delete *(MapIterator->second);
-    }
-    
-    EvtMap->clear();
-}
+PS_Calorimeter::PS_Calorimeter(G4String name, vector<G4int> NestingLevel,G4int depth)
+  :G4VPrimitiveScorer(name, depth){
+    m_NestingLevel = NestingLevel;
+  }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_Calorimeter::DrawAll(){
-    
+PS_Calorimeter::~PS_Calorimeter(){
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_Calorimeter::PrintAll(){
-    G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
-    G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
-    G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
-}
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-PS_CalorimeterWithInteraction::PS_CalorimeterWithInteraction(G4String name, vector<G4int> NestingLevel,G4int depth)
-:G4VPrimitiveScorer(name, depth),HCID(-1){
-    m_NestingLevel = NestingLevel;
-}
+G4bool PS_Calorimeter::ProcessHits(G4Step* aStep, G4TouchableHistory*){
+  // Contain Energy, Time + as many copy number as nested volume
+  static unsigned int mysize = m_NestingLevel.size();
+  t_Energy = aStep->GetTotalEnergyDeposit();
+  t_Time = aStep->GetPreStepPoint()->GetGlobalTime();
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-PS_CalorimeterWithInteraction::~PS_CalorimeterWithInteraction(){
-}
+  for(unsigned int i = 0 ; i < mysize ; i++){
+    t_Level.push_back(aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]));
+  }
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-G4bool PS_CalorimeterWithInteraction::ProcessHits(G4Step* aStep, G4TouchableHistory*){
-
-    // Contain Energy, Time + as many copy number as nested volume
-    unsigned int mysize = m_NestingLevel.size();
-    G4double* Infos = new G4double[7+mysize];
-    Infos[0] = aStep->GetTotalEnergyDeposit();
-    Infos[1] = aStep->GetPreStepPoint()->GetGlobalTime();
-    
-    
-    // Interaction coordinates (used to fill the InteractionCoordinates branch)
-    m_Position  = aStep->GetPreStepPoint()->GetPosition();
-    
-    Infos[2] = m_Position.x();
-    Infos[3] = m_Position.y();
-    Infos[4] = m_Position.z();
-    Infos[5] = m_Position.theta();
-    Infos[6] = m_Position.phi();
-    
-    for(unsigned int i = 0 ; i < mysize ; i++){
-        Infos[i+7] = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i]);
-    }
-    
-    m_Index = 0 ;
-    G4int multiplier = 1;
-    for(unsigned int i = 0 ; i < mysize ; i++){
-        m_Index+= aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_NestingLevel[i])*multiplier;
-        multiplier*=10;
+
+  // Check if the particle has interact before, if yes, add up the energies.
+  vector<CalorimeterData>::iterator it;
+  it = m_Data.find(CalorimeterData::CalculateIndex(t_Level)); 
+    if(it!=m_Data.end()){
+      it->Add(t_Energy);
     }
-    
-    // Check if the particle has interact before, if yes, add up the energies.
-    map<G4int, G4double**>::iterator it;
-    it= EvtMap->GetMap()->find(m_Index);
-    if(it!=EvtMap->GetMap()->end()){
-        G4double* dummy = *(it->second);
-        Infos[0]+=dummy[0];
+    else{
+      m_Data.Set(t_Energy,t_Time,t_Level);  
     }
-    
-    EvtMap->set(m_Index, Infos);
-    return TRUE;
+
+  return TRUE;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_CalorimeterWithInteraction::Initialize(G4HCofThisEvent* HCE){
-    EvtMap = new NPS::HitsMap<G4double*>(GetMultiFunctionalDetector()->GetName(), GetName());
-    if (HCID < 0) {
-        HCID = GetCollectionID(0);
-    }
-    HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+void PS_Calorimeter::Initialize(G4HCofThisEvent* HCE){
+  m_Data.clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_CalorimeterWithInteraction::EndOfEvent(G4HCofThisEvent*){
+void PS_Calorimeter::EndOfEvent(G4HCofThisEvent*){
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_CalorimeterWithInteraction::clear(){
-    std::map<G4int, G4double**>::iterator    MapIterator;
-    for (MapIterator = EvtMap->GetMap()->begin() ; MapIterator != EvtMap->GetMap()->end() ; MapIterator++){
-        delete *(MapIterator->second);
-    }
-    
-    EvtMap->clear();
+void PS_Calorimeter::clear(){
+  m_Data.clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_CalorimeterWithInteraction::DrawAll(){
-    
+void PS_Calorimeter::DrawAll(){
+
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_CalorimeterWithInteraction::PrintAll(){
-    G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
-    G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
-    G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
+void PS_Calorimeter::PrintAll(){
 }
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
diff --git a/NPSimulation/Scorers/CalorimeterScorers.hh b/NPSimulation/Scorers/CalorimeterScorers.hh
index 9b561b96bef3b702666ca188d9ea7145d9d42eb3..8525e52951cdeaa53f53c005d4fccb8f9f151c33 100644
--- a/NPSimulation/Scorers/CalorimeterScorers.hh
+++ b/NPSimulation/Scorers/CalorimeterScorers.hh
@@ -32,7 +32,58 @@
 using namespace std;
 using namespace CLHEP;
 
-namespace CALORIMETERSCORERS {
+namespace CalorimeterScorers {
+  // Hold One hit info
+  class CalorimeterData{
+      public:
+        CalorimeterData(const double& Energy,const double& Time,const vector<unsigned int>& Nesting){
+          m_Index=CalculateIndex(Nesting);
+          m_Level=Nesting;
+          m_Energy=Energy;
+          m_Time=Time;
+          };
+        ~CalorimeterData(){};
+
+      private:
+        unsigned int m_Index;
+        vector<unsigned int> m_Level;
+        double m_Energy;
+        double m_Time;
+
+      public:
+        static unsigned int CalculateIndex(const vector<unsigned int>& Nesting);
+     
+      public:
+        inline unsigned int GetIndex() const {return m_Index;}
+        inline vector<unsigned int> GetLevel() const {return m_Level;}; 
+        inline double GetEnergy() const {return m_Energy;};
+        inline double GetTime() const {return m_Time;};
+
+      public:
+        void Add(const double& Energy) {m_Energy+=Energy;};
+      };
+
+  // Manage a vector of DSSD hit
+  class CalorimeterDataVector{
+    public:
+      CalorimeterDataVector(){};
+      ~CalorimeterDataVector(){};
+
+    private:
+      vector<CalorimeterData> m_Data;
+
+    public:
+      vector<CalorimeterData>::iterator find(const unsigned int& index) ;
+      inline void clear(){m_Data.clear();} ;
+      inline vector<CalorimeterData>::iterator end() {return m_Data.end();};
+      inline vector<CalorimeterData>::iterator begin() {return m_Data.begin();};
+      inline unsigned int size() {return m_Data.size();};
+      inline void Add(const unsigned int& index,const double& Energy) {find(index)->Add(Energy);};
+      inline void Set(const double& Energy, const double& Time, const vector<unsigned int>& Nesting) {m_Data.push_back(CalorimeterData(Energy,Time,Nesting));};
+      CalorimeterData* operator[](const unsigned int& i){return &m_Data[i];};
+  };
+
+
     //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
     class PS_Calorimeter : public G4VPrimitiveScorer{
         
@@ -57,37 +108,16 @@ namespace CALORIMETERSCORERS {
         vector<G4int> m_NestingLevel;
         G4int m_Index;
         
-    private: // inherited from G4VPrimitiveScorer
-        G4int HCID;
-        NPS::HitsMap<G4double*>* EvtMap;
-    };
-    
-    //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-    class PS_CalorimeterWithInteraction : public G4VPrimitiveScorer{
-        
-    public: // with description
-        PS_CalorimeterWithInteraction(G4String name, vector<G4int> NestingLevel,G4int depth=0);
-        ~PS_CalorimeterWithInteraction();
-        
-    protected: // with description
-        G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-        G4ThreeVector m_Position;
+    private: 
+        CalorimeterDataVector m_Data;
+        double t_Energy;
+        double t_Time;
+        vector<unsigned int> t_Level;
     public:
-        void Initialize(G4HCofThisEvent*);
-        void EndOfEvent(G4HCofThisEvent*);
-        void clear();
-        void DrawAll();
-        void PrintAll();
-        
-    private: // How much level of volume nesting should be considered
-        // Give the list of the nesting level at which the copy number should be return.
-        // 0 is the lowest level possible (the actual volume copy number in which the interaction happen)
-        vector<G4int> m_NestingLevel;
-        G4int m_Index; 
-        
-    private: // inherited from G4VPrimitiveScorer
-        G4int HCID;
-        NPS::HitsMap<G4double*>* EvtMap;
+      inline unsigned int  GetMult() {return m_Data.size();};
+      inline double GetEnergy(const unsigned int& i) {return m_Data[i]->GetEnergy();};
+      inline double GetTime(const unsigned int& i) {return m_Data[i]->GetTime();};
+      inline vector<unsigned int> GetLevel(const unsigned int& i) {return m_Data[i]->GetLevel();};
     };
 }
 
diff --git a/NPSimulation/Scorers/DSSDScorers.cc b/NPSimulation/Scorers/DSSDScorers.cc
new file mode 100644
index 0000000000000000000000000000000000000000..dec8a8e7c7e670ee6e22ae3e9fe80e2aab3f57f7
--- /dev/null
+++ b/NPSimulation/Scorers/DSSDScorers.cc
@@ -0,0 +1,422 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : February 2013                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  File old the scorer specific to the Sharc Detector                       *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ * This new type of scorer is aim to become the standard for DSSD,SSSD and   *
+ * PAD detector (any Silicon Detector)                                       *
+ *****************************************************************************/
+#include "DSSDScorers.hh"
+#include "G4UnitsTable.hh"
+using namespace DSSDScorers ;
+vector<DSSDData>::iterator DSSDDataVector::find(const unsigned int& index){
+  for(vector<DSSDData>::iterator it= m_Data.begin()  ; it !=m_Data.end() ; it++){
+    if((*it).GetIndex()==index)
+      return it;
+  }
+  return m_Data.end();
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Images::PS_Images(G4String name, string imageFront,string imageBack,double scalingFront, double scalingBack, double centerOffsetX,double centerOffsetY,unsigned int ignoreValue, G4int depth)  :G4VPrimitiveScorer(name, depth){
+  m_ImageFront = new NPL::Image(imageFront,scalingFront,scalingFront);
+  m_ImageBack  = new NPL::Image(imageBack,scalingBack,scalingBack);
+  m_ScalingFront = scalingFront;
+  m_ScalingBack  = scalingBack;
+  m_CenterOffsetX = centerOffsetX;
+  m_CenterOffsetY = centerOffsetY;
+  m_IgnoreValue = ignoreValue;
+  m_Level = depth;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4bool PS_Images::ProcessHits(G4Step* aStep, G4TouchableHistory*){
+
+  // contain Energy Time, DetNbr, PixelFront and PixelBack
+  t_Energy = aStep->GetTotalEnergyDeposit();
+  t_Time = aStep->GetPreStepPoint()->GetGlobalTime();
+
+  t_DetectorNbr = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_Level);
+  t_Position  = aStep->GetPreStepPoint()->GetPosition();
+
+  // transforming the position to the local volume
+  t_Position = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(t_Position);
+  t_PixelFront = m_ImageFront->GetPixelAtCoordinate(t_Position.x(),t_Position.y());
+  t_PixelBack = m_ImageBack->GetPixelAtCoordinate(t_Position.x(),t_Position.y());
+
+  // If front and back are in inactive part of the wafer,
+  // nothing is added to the unordered_map
+  if(t_PixelFront == m_IgnoreValue && t_PixelBack == m_IgnoreValue)
+    return FALSE;
+
+
+  // Check if the particle has interact before, if yes, add up the energies.
+   vector<DSSDData>::iterator it;
+  
+  it= m_HitFront.find(DSSDData::CalculateIndex(t_PixelFront,t_DetectorNbr));
+  if(it!=m_HitFront.end()){
+    it->Add(t_Energy);
+  }
+
+  else{
+    m_HitFront.Set(t_Energy,t_Time,t_PixelFront,t_DetectorNbr);
+  }
+
+  // Check if the particle has interact before, if yes, add up the energies.
+  it= m_HitBack.find(DSSDData::CalculateIndex(t_PixelBack,t_DetectorNbr));
+  if(it!=m_HitBack.end()){
+    it->Add(t_Energy);
+  }
+
+  else{
+    m_HitBack.Set(t_Energy,t_Time,t_PixelBack,t_DetectorNbr);
+  }
+
+  return TRUE;
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Images::Initialize(G4HCofThisEvent*){
+  clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Images::EndOfEvent(G4HCofThisEvent*){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Images::clear(){
+  m_HitFront.clear();
+  m_HitBack.clear();
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Images::GetARGBFront(unsigned int& i,unsigned int& a,unsigned int& r,unsigned int& g,unsigned int& b){
+  unsigned int Info = m_HitFront[i]->GetStrip();
+  a = (Info>>24)&0xff;
+  r = (Info>>16)&0xff;
+  g = (Info>>8)&0xff;
+  b = (Info>>0)&0xff;
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Images::GetARGBBack(unsigned int& i,unsigned int& a,unsigned int& r,unsigned int& g,unsigned int& b){
+  unsigned int Info = m_HitBack[i]->GetStrip();
+  a = (Info>>24)&0xff;
+  r = (Info>>16)&0xff;
+  g = (Info>>8)&0xff;
+  b = (Info>>0)&0xff;
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Rectangle::PS_Rectangle(G4String name,G4int Level, G4double StripPlaneLength, G4double StripPlaneWidth, G4int NumberOfStripLength,G4int NumberOfStripWidth,G4int depth,G4String axis)
+  :G4VPrimitiveScorer(name, depth){
+    m_StripPlaneLength = StripPlaneLength;
+    m_StripPlaneWidth = StripPlaneWidth;
+    m_NumberOfStripLength = NumberOfStripLength;
+    m_NumberOfStripWidth = NumberOfStripWidth;
+    m_StripPitchLength = m_StripPlaneLength / m_NumberOfStripLength;
+    m_StripPitchWidth = m_StripPlaneWidth / m_NumberOfStripWidth;
+    m_Level = Level;
+    if(axis=="xy")
+      m_Axis=ps_xy;
+    else if(axis=="yz")
+      m_Axis=ps_yz;
+    else if(axis=="xz")
+      m_Axis=ps_xz;
+
+
+  }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Rectangle::~PS_Rectangle(){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4bool PS_Rectangle::ProcessHits(G4Step* aStep, G4TouchableHistory*){
+
+  // contain Energy Time, DetNbr, StripFront and StripBack
+  t_Energy  = aStep->GetTotalEnergyDeposit();
+  t_Time  = aStep->GetPreStepPoint()->GetGlobalTime();
+
+  t_DetectorNumber = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_Level);
+  t_Position  = aStep->GetPreStepPoint()->GetPosition();
+
+  t_Position = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(t_Position);
+
+  if(m_Axis==ps_xy){
+    t_StripLengthNumber = (int)((t_Position.x() + m_StripPlaneLength / 2.) / m_StripPitchLength ) + 1  ;
+    t_StripWidthNumber = (int)((t_Position.y() + m_StripPlaneWidth / 2.) / m_StripPitchWidth ) + 1  ;
+  }
+  else if(m_Axis==ps_yz){
+    t_StripLengthNumber = (int)((t_Position.y() + m_StripPlaneLength / 2.) / m_StripPitchLength ) + 1  ;
+    t_StripWidthNumber = (int)((t_Position.z() + m_StripPlaneWidth / 2.) / m_StripPitchWidth ) + 1  ;
+  }
+  else if(m_Axis==ps_xz){
+    t_StripLengthNumber = (int)((t_Position.x() + m_StripPlaneLength / 2.) / m_StripPitchLength ) + 1  ;
+    t_StripWidthNumber = (int)((t_Position.z() + m_StripPlaneWidth / 2.) / m_StripPitchWidth ) + 1  ;
+  }
+
+  //Rare case where particle is close to edge of silicon plan
+  if (t_StripLengthNumber > m_NumberOfStripLength) t_StripLengthNumber = m_NumberOfStripLength;
+  if (t_StripWidthNumber > m_NumberOfStripWidth) t_StripWidthNumber = m_NumberOfStripWidth;
+
+  // Check if the particle has interact before, if yes, add up the energies.
+  vector<DSSDData>::iterator it;
+  // Length
+  it = m_HitLength.find(DSSDData::CalculateIndex(t_StripLengthNumber,t_DetectorNumber));
+  if(it!=m_HitLength.end()){
+    it->Add(t_Energy);
+  }
+  else
+    m_HitLength.Set(t_Energy,t_Time,t_StripLengthNumber,t_DetectorNumber);
+  // Width
+  it = m_HitWidth.find(DSSDData::CalculateIndex(t_StripWidthNumber,t_DetectorNumber));
+  if(it!=m_HitWidth.end()){
+    it->Add(t_Energy);
+  }
+  else
+    m_HitWidth.Set(t_Energy,t_Time,t_StripWidthNumber,t_DetectorNumber);
+
+
+return TRUE;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Rectangle::Initialize(G4HCofThisEvent*){
+  clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Rectangle::EndOfEvent(G4HCofThisEvent*){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Rectangle::clear(){
+  m_HitLength.clear();
+  m_HitWidth.clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Rectangle::DrawAll(){
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Rectangle::PrintAll(){
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Annular::PS_Annular(G4String name,G4int Level, G4double StripPlaneInnerRadius, G4double StripPlaneOuterRadius, G4double PhiStart,G4double PhiStop, G4int NumberOfStripRing,G4int NumberOfStripSector,G4int NumberOfQuadrant,G4int depth)
+  :G4VPrimitiveScorer(name, depth){
+
+    m_StripPlaneInnerRadius = StripPlaneInnerRadius;
+    m_StripPlaneOuterRadius = StripPlaneOuterRadius;
+    m_PhiStart = PhiStart;
+    m_PhiStop = PhiStop;
+    m_NumberOfStripRing = NumberOfStripRing;
+    m_NumberOfStripSector = NumberOfStripSector;
+    m_NumberOfStripQuadrant  = NumberOfQuadrant;
+    m_StripPitchRing =  (m_StripPlaneOuterRadius-m_StripPlaneInnerRadius)/m_NumberOfStripRing;
+    m_StripPitchSector = (m_PhiStop-m_PhiStart)/m_NumberOfStripSector;
+    m_StripPitchQuadrant = (m_PhiStop-m_PhiStart)/m_NumberOfStripQuadrant;
+    m_Level = Level;
+
+    m_uz = G4ThreeVector(0,0,1);
+  }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Annular::~PS_Annular(){
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4bool PS_Annular::ProcessHits(G4Step* aStep, G4TouchableHistory*){
+  t_Energy = aStep->GetTotalEnergyDeposit();
+
+  t_Time = aStep->GetPreStepPoint()->GetGlobalTime();
+
+  t_DetectorNumber = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_Level);
+  t_Position = aStep->GetPreStepPoint()->GetPosition();
+
+  //Transform into local coordinates
+  t_Position = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(t_Position);
+  t_StripRingNumber = (int) ((t_Position.rho() - m_StripPlaneInnerRadius) / m_StripPitchRing ) + 1 ;
+
+  // phi() from G4-CLHEP method return azimuth between [-pi;pi]
+  // we need it in [0;2pi] to calculate sector nbr in [1,NSectors]
+  // only add 360 if the value is negative
+  double phi = (t_Position.phi()<0)?  t_Position.phi()+2*pi : t_Position.phi() ;
+
+  // factor out the extra 360 degrees before strip/quad calculation
+  t_StripSectorNumber   = (int) ( fmod((phi - m_PhiStart),2*pi)  / m_StripPitchSector  ) + 1 ;
+  t_StripQuadrantNumber = (int) ( fmod((phi - m_PhiStart),2*pi)  / m_StripPitchQuadrant) + 1 ;
+
+  //Rare case where particle is close to edge of silicon plan
+  if (t_StripRingNumber > m_NumberOfStripRing) t_StripRingNumber = m_NumberOfStripRing;
+  if (t_StripSectorNumber > m_NumberOfStripSector) t_StripSectorNumber = m_NumberOfStripSector;
+  if (t_StripQuadrantNumber > m_NumberOfStripQuadrant) t_StripQuadrantNumber = m_NumberOfStripQuadrant;
+
+  vector<DSSDData>::iterator it;
+  // Ring
+  it = m_HitRing.find(DSSDData::CalculateIndex(t_StripRingNumber,t_DetectorNumber));
+  if(it!=m_HitRing.end()){
+    it->Add(t_Energy);
+  }
+  else
+    m_HitRing.Set(t_Energy,t_Time,t_StripRingNumber,t_DetectorNumber);
+
+  //Sector
+  it = m_HitSector.find(DSSDData::CalculateIndex(t_StripSectorNumber,t_DetectorNumber));
+  if(it!=m_HitSector.end()){
+    it->Add(t_Energy);
+  }
+  else
+    m_HitSector.Set(t_Energy,t_Time,t_StripSectorNumber,t_DetectorNumber);
+
+  //Quadrant
+  it = m_HitQuadrant.find(DSSDData::CalculateIndex(t_StripQuadrantNumber,t_DetectorNumber));
+  if(it!=m_HitQuadrant.end()){
+    it->Add(t_Energy);
+  }
+  else
+    m_HitQuadrant.Set(t_Energy,t_Time,t_StripQuadrantNumber,t_DetectorNumber);
+
+  return TRUE;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Annular::Initialize(G4HCofThisEvent*){
+  clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Annular::EndOfEvent(G4HCofThisEvent*){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Annular::clear(){
+  m_HitRing.clear();
+  m_HitSector.clear();
+  m_HitQuadrant.clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Annular::DrawAll(){
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Annular::PrintAll(){
+}
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Resistive::PS_Resistive(G4String name,G4int Level, G4double StripPlaneLength, G4double StripPlaneWidth, G4int NumberOfStripWidth,G4int depth)
+  :G4VPrimitiveScorer(name, depth){
+    m_StripPlaneLength = StripPlaneLength;
+    m_StripPlaneWidth = StripPlaneWidth;
+    m_NumberOfStripWidth = NumberOfStripWidth;
+    m_StripPitchWidth = m_StripPlaneWidth / m_NumberOfStripWidth;
+    m_Level = Level;
+
+    t_Position = G4ThreeVector(-1000,-1000,-1000);
+    t_DetectorNumber = -1;
+    t_StripWidthNumber = -1;
+  }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Resistive::~PS_Resistive(){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4bool PS_Resistive::ProcessHits(G4Step* aStep, G4TouchableHistory*){
+
+  // contain Energy Total, E1, E2, Time, DetNbr,  and StripWidth
+  t_Energy = aStep->GetTotalEnergyDeposit(); 
+  t_Time = aStep->GetPreStepPoint()->GetGlobalTime();
+  
+  t_DetectorNumber = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_Level);
+  t_Position = aStep->GetPreStepPoint()->GetPosition();
+  t_Position = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(t_Position);
+
+  t_StripWidthNumber = (int)((t_Position.x() + m_StripPlaneWidth / 2.) / m_StripPitchWidth ) + 1  ;
+
+  // The energy is divided in two depending on the position
+  // position along the resistive strip
+  double P = (t_Position.z())/(0.5*m_StripPlaneLength);
+  // Energy
+  t_EnergyUp = aStep->GetTotalEnergyDeposit()*(1+P)*0.5; 
+  t_EnergyDown = t_Energy-t_EnergyUp; 
+
+  //Rare case where particle is close to edge of silicon plan
+  if (t_StripWidthNumber > m_NumberOfStripWidth) t_StripWidthNumber = m_NumberOfStripWidth;
+
+
+  // Up
+  vector<DSSDData>::iterator it;
+  it = m_HitUp.find(DSSDData::CalculateIndex(t_DetectorNumber,t_StripWidthNumber));
+  if(it!=m_HitUp.end())
+    it->Add(t_EnergyUp);
+  else
+    m_HitUp.Set(t_EnergyUp,t_Time,t_DetectorNumber,t_StripWidthNumber);
+    
+  // Down
+  it = m_HitDown.find(DSSDData::CalculateIndex(t_DetectorNumber,t_StripWidthNumber));
+  if(it!=m_HitDown.end())
+    it->Add(t_EnergyDown);
+  else
+    m_HitDown.Set(t_EnergyDown,t_Time,t_DetectorNumber,t_StripWidthNumber);
+  
+   // Back
+  it = m_HitBack.find(DSSDData::CalculateIndex(t_DetectorNumber,t_StripWidthNumber));
+  if(it!=m_HitBack.end())
+    it->Add(t_Energy);
+  else
+    m_HitBack.Set(t_Energy,t_Time,t_DetectorNumber,1);
+  
+  
+  
+  return TRUE;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Resistive::Initialize(G4HCofThisEvent* HCE){
+  m_HitUp.clear();
+  m_HitDown.clear();
+  m_HitBack.clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Resistive::EndOfEvent(G4HCofThisEvent*){
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Resistive::clear(){
+  m_HitUp.clear();
+  m_HitDown.clear();
+  m_HitBack.clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Resistive::DrawAll(){
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Resistive::PrintAll(){
+}
diff --git a/NPSimulation/Scorers/DSSDScorers.hh b/NPSimulation/Scorers/DSSDScorers.hh
new file mode 100644
index 0000000000000000000000000000000000000000..3447ed112e7dec4e9ec6f03b6689ba64d9ec2330
--- /dev/null
+++ b/NPSimulation/Scorers/DSSDScorers.hh
@@ -0,0 +1,360 @@
+#ifndef DSSDScorers_h
+#define DSSDScorers_h 1
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : February 2013                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  File old the scorer specific to the Silicon Detector                     *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ * This new style of scorer is aim to become the standard way of doing scorer*
+ * in NPTool.                                                                *
+ *The index is build using the TrackID, Detector Number and Strip Number.    *
+ *The scorer Hold Energy and time together                                   *
+ *Only one scorer is needed for a detector                                   *
+ *****************************************************************************/
+#include "G4VPrimitiveScorer.hh"
+#include "NPSHitsMap.hh"
+#include "NPImage.h"
+#include <unordered_map>
+using namespace std;
+using namespace CLHEP;
+
+namespace DSSDScorers {
+  // Hold data for DSSD hit
+  class DSSDData{
+    public:
+      DSSDData(){};
+      DSSDData(const double& Energy, const double& Time, const unsigned int& Strip, const unsigned int& Detector){
+        m_Energy=Energy;
+        m_Time=Time;
+        m_Strip=Strip;
+        m_Detector=Detector;
+        m_Index = CalculateIndex(m_Strip,m_Detector);
+      }
+
+      ~DSSDData(){};
+
+    private:
+      unsigned int m_Index;
+      double m_Energy;
+      double m_Time;
+      unsigned int m_Strip;
+      unsigned int m_Detector;
+
+    public : // Modifier
+      inline void Set(const double& Energy, const double& Time, const unsigned int& Strip, const unsigned int& Detector){
+        m_Energy=Energy;
+        m_Time=Time;
+        m_Strip=Strip;
+        m_Detector=Detector;
+        m_Index = CalculateIndex(m_Strip,m_Detector);
+      }
+
+      inline void Add(const double& Energy) {m_Energy+=Energy;}; 
+
+    public: // Accessor
+      inline unsigned int GetIndex() const {return m_Index;};
+      inline double GetEnergy() const {return m_Energy;};
+      inline double GetTime() const {return m_Time;};
+      inline unsigned int GetStrip() const {return m_Strip;};
+      inline unsigned int GetDetector() const {return m_Detector;};
+
+    public:
+      static unsigned int CalculateIndex(const unsigned int& Strip,const unsigned int& Detector) {return Detector*1e6+Strip;}
+
+  };
+
+  // Manage a vector of DSSD hit
+  class DSSDDataVector{
+    public:
+      DSSDDataVector(){};
+      ~DSSDDataVector(){};
+
+    private:
+      vector<DSSDData> m_Data;
+
+    public:
+      vector<DSSDData>::iterator find(const unsigned int& index) ;
+      inline void clear(){m_Data.clear();} ;
+      inline vector<DSSDData>::iterator end() {return m_Data.end();};
+      inline vector<DSSDData>::iterator begin() {return m_Data.begin();};
+      inline unsigned int size() {return m_Data.size();};
+      inline void Add(const unsigned int& index,const double& Energy) {find(index)->Add(Energy);};
+      inline void Set(const double& Energy, const double& Time, const unsigned int& Strip, const unsigned int& Detector) {m_Data.push_back(DSSDData(Energy,Time,Strip,Detector));};
+      DSSDData* operator[](const unsigned int& i){return &m_Data[i];};
+  };
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  class PS_Images : public G4VPrimitiveScorer{
+
+    public: // with description
+      PS_Images(G4String name, string imageFront,string imageBack,double scalingFront, double scalingBack, double centerOffsetX,double centerOffsetY,unsigned int ignoreValue, G4int depth=0);
+      ~PS_Images(){};
+
+    protected: // with description
+      G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+    public:
+      void Initialize(G4HCofThisEvent*);
+      void EndOfEvent(G4HCofThisEvent*);
+      void clear();
+      void DrawAll(){};
+      void PrintAll(){};
+
+    private: // Geometry of the detector
+      NPL::Image* m_ImageFront; 
+      NPL::Image* m_ImageBack; 
+      double m_ScalingFront;
+      double m_ScalingBack;
+      double m_CenterOffsetX;
+      double m_CenterOffsetY;
+      unsigned int m_IgnoreValue;
+
+      // Level at which to find the copy number linked to the detector number
+      G4int    m_Level;
+
+    private: // inherited from G4VPrimitiveScorer
+      DSSDDataVector m_HitFront;
+      DSSDDataVector m_HitBack;
+
+    private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
+      G4ThreeVector t_Position;
+      unsigned int t_Index;
+      double t_Energy;
+      double t_Time;
+      unsigned int t_DetectorNbr;
+      unsigned int t_PixelFront;
+      unsigned int t_PixelBack;
+
+    public: // information accessor
+      inline unsigned int GetFrontMult() {return m_HitFront.size();};
+      inline unsigned int GetStripFront(const unsigned int& i){return m_HitFront[i]->GetStrip();}; 
+      inline unsigned int GetDetectorFront(const unsigned int& i){return m_HitFront[i]->GetDetector();};
+      inline double GetEnergyFront(const unsigned int& i){return m_HitFront[i]->GetEnergy();};
+      inline double GetTimeFront(const unsigned int& i){return m_HitFront[i]->GetTime();};
+      inline unsigned int GetBackMult() {return m_HitBack.size();};
+      inline unsigned int GetStripBack(const unsigned int& i){return m_HitBack[i]->GetStrip();}; 
+      inline unsigned int GetDetectorBack(const unsigned int& i){return m_HitBack[i]->GetDetector();};
+      inline double GetEnergyBack(const unsigned int& i){return m_HitBack[i]->GetEnergy();};
+      inline double GetTimeBack(const unsigned int& i){return m_HitBack[i]->GetTime();};
+
+      void GetARGBFront(unsigned int& i,unsigned int& a,unsigned int& r,unsigned int& g,unsigned int& b); 
+      void GetARGBBack(unsigned int& i,unsigned int& a,unsigned int& r,unsigned int& g,unsigned int& b);
+  };
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  class PS_Rectangle : public G4VPrimitiveScorer{
+
+    public: // with description
+      PS_Rectangle(G4String name, G4int Level, G4double StripPlaneLength, G4double StripPlaneWidth, G4int NumberOfStripLength,G4int NumberOfStripWidth,G4int depth=0,G4String axis="xy");
+      ~PS_Rectangle();
+
+    private:
+      enum psAxis{ps_xy,ps_yz,ps_xz};
+      psAxis m_Axis;
+
+    protected: // with description
+      G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+    public:
+      void Initialize(G4HCofThisEvent*);
+      void EndOfEvent(G4HCofThisEvent*);
+      void clear();
+      void DrawAll();
+      void PrintAll();
+
+    private: // Geometry of the detector
+      double m_StripPlaneLength;
+      double m_StripPlaneWidth;
+      unsigned int    m_NumberOfStripLength;
+      unsigned int    m_NumberOfStripWidth;
+      double m_StripPitchLength;
+      double m_StripPitchWidth;
+      // Level at which to find the copy number linked to the detector number
+      int    m_Level;
+
+    private: // inherited from G4VPrimitiveScorer
+      DSSDDataVector m_HitLength;
+      DSSDDataVector m_HitWidth;
+    private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
+      G4ThreeVector t_Position;
+      unsigned int t_Index;
+      double t_Energy;
+      double t_Time;
+      unsigned int t_DetectorNumber;
+      unsigned int t_StripLengthNumber;
+      unsigned int t_StripWidthNumber;
+
+    public:
+      inline unsigned int GetLengthMult() {return m_HitLength.size();};
+      inline unsigned int GetStripLength(const unsigned int& i){return m_HitLength[i]->GetStrip();};
+      inline unsigned int GetDetectorLength(const unsigned int& i){return m_HitLength[i]->GetDetector();};
+      inline double GetEnergyLength(const unsigned int& i){return m_HitLength[i]->GetEnergy();};
+      inline double GetTimeLength(const unsigned int& i){return m_HitLength[i]->GetTime();};
+      inline unsigned int GetWidthMult() {return m_HitWidth.size();};
+      inline unsigned int GetStripWidth(const unsigned int& i){return m_HitWidth[i]->GetStrip();};
+      inline unsigned int GetDetectorWidth(const unsigned int& i){return m_HitWidth[i]->GetDetector();};
+      inline double GetEnergyWidth(const unsigned int& i){return m_HitWidth[i]->GetEnergy();};
+      inline double GetTimeWidth(const unsigned int& i){return m_HitWidth[i]->GetTime();};
+
+
+    public:
+      static unsigned int CalculateIndex(const unsigned int& Strip,const unsigned int& Detector) {return Detector*1e6+Strip;}
+
+
+  };
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  class PS_Annular : public G4VPrimitiveScorer{
+
+    public: // with description
+      PS_Annular(G4String name,G4int Level, G4double StripPlaneInnerRadius, G4double StripPlaneOuterRadius, G4double PhiStart,G4double PhiStop, G4int NumberOfStripRing,G4int NumberOfStripSector=1, G4int NumberOfQuadrant=1,G4int depth=0);
+      ~PS_Annular();
+
+    protected: // with description
+      G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+    public:
+      void Initialize(G4HCofThisEvent*);
+      void EndOfEvent(G4HCofThisEvent*);
+      void clear();
+      void DrawAll();
+      void PrintAll();
+
+    private: // Geometry of the detector
+      double m_StripPlaneInnerRadius;
+      double m_StripPlaneOuterRadius;
+      double m_PhiStart;
+      double m_PhiStop;
+      unsigned int    m_NumberOfStripRing;
+      unsigned int    m_NumberOfStripSector;
+      unsigned int    m_NumberOfStripQuadrant;
+      double m_StripPitchRing;
+      double m_StripPitchSector;
+      double m_StripPitchQuadrant; 
+      string m_Axis;
+      // Level at which to find the copy number linked to the detector number
+      int    m_Level;
+
+
+    private: // inherited from G4VPrimitiveScorer
+      DSSDDataVector m_HitRing;
+      DSSDDataVector m_HitSector;
+      DSSDDataVector m_HitQuadrant;
+
+
+    private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
+      G4ThreeVector t_Position;
+      unsigned int t_Index;
+      double t_Energy;
+      double t_Time;
+      unsigned int t_DetectorNumber;
+      unsigned int t_StripRingNumber;
+      unsigned int t_StripSectorNumber;
+      unsigned int t_StripQuadrantNumber;
+
+    public:
+      inline unsigned int GetRingMult() {return m_HitRing.size();};
+      inline unsigned int GetStripRing(const unsigned int& i){return m_HitRing[i]->GetStrip();}; 
+      inline unsigned int GetDetectorRing(const unsigned int& i){return m_HitRing[i]->GetDetector();};
+      inline double GetEnergyRing(const unsigned int& i){return m_HitRing[i]->GetEnergy();};
+      inline double GetTimeRing(const unsigned int& i){return m_HitRing[i]->GetTime();};
+      inline unsigned int GetSectorMult() {return m_HitSector.size();};
+      inline unsigned int GetStripSector(const unsigned int& i){return m_HitSector[i]->GetStrip();}; 
+      inline unsigned int GetDetectorSector(const unsigned int& i){return m_HitSector[i]->GetDetector();};
+      inline double GetEnergySector(const unsigned int& i){return m_HitSector[i]->GetEnergy();};
+      inline double GetTimeSector(const unsigned int& i){return m_HitSector[i]->GetTime();};
+      inline unsigned int GetQuadrantMult() {return m_HitQuadrant.size();};
+      inline unsigned int GetStripQuadrant(const unsigned int& i){return m_HitQuadrant[i]->GetStrip();}; 
+      inline unsigned int GetDetectorQuadrant(const unsigned int& i){return m_HitQuadrant[i]->GetDetector();};
+      inline double GetEnergyQuadrant(const unsigned int& i){return m_HitQuadrant[i]->GetEnergy();};
+      inline double GetTimeQuadrant(const unsigned int& i){return m_HitQuadrant[i]->GetTime();};
+
+    private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
+      G4ThreeVector m_uz ;
+
+    public:
+      static unsigned int CalculateIndex(const unsigned int& Strip,const unsigned int& Detector) {return Detector*1e6+Strip;}
+
+
+  };
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  class PS_Resistive : public G4VPrimitiveScorer{
+
+    public: // with description
+      PS_Resistive(G4String name, G4int Level,
+          G4double StripPlaneLength, G4double StripPlaneWidth,
+          G4int NumberOfStripWidth,G4int depth=0);
+
+      ~PS_Resistive();
+
+    protected: // with description
+      G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+    public:
+      void Initialize(G4HCofThisEvent*);
+      void EndOfEvent(G4HCofThisEvent*);
+      void clear();
+      void DrawAll();
+      void PrintAll();
+
+    private: // Geometry of the detector
+      double m_StripPlaneLength;
+      double m_StripPlaneWidth;
+      unsigned int    m_NumberOfStripWidth;
+      double m_StripPitchWidth;
+      // Level at which to find the copy number linked to the detector number
+      G4int    m_Level;
+
+    private: 
+      // Up and Down are each extremities of the resistive strip
+      DSSDDataVector m_HitUp;
+      DSSDDataVector m_HitDown;
+      DSSDDataVector m_HitBack;
+    
+    private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
+      G4ThreeVector t_Position;
+      double t_Energy;
+      double t_EnergyUp;
+      double t_EnergyDown;
+      double t_Time;
+      unsigned int t_DetectorNumber;
+      unsigned int t_StripWidthNumber;
+      unsigned int t_Index;
+    public:
+      inline unsigned int GetUpMult() {return m_HitUp.size();};
+      inline unsigned int GetStripUp(const unsigned int& i){return m_HitUp[i]->GetStrip();}; 
+      inline unsigned int GetDetectorUp(const unsigned int& i){return m_HitUp[i]->GetDetector();};
+      inline double GetEnergyUp(const unsigned int& i){return m_HitUp[i]->GetEnergy();};
+      inline double GetTimeUp(const unsigned int& i){return m_HitUp[i]->GetTime();};
+      inline unsigned int GetDownMult() {return m_HitDown.size();};
+      inline unsigned int GetStripDown(const unsigned int& i){return m_HitDown[i]->GetStrip();}; 
+      inline unsigned int GetDetectorDown(const unsigned int& i){return m_HitDown[i]->GetDetector();};
+      inline double GetEnergyDown(const unsigned int& i){return m_HitDown[i]->GetEnergy();};
+      inline double GetTimeDown(const unsigned int& i){return m_HitDown[i]->GetTime();};
+      inline unsigned int GetBackMult() {return m_HitBack.size();};
+      inline unsigned int GetStripBack(const unsigned int& i){return m_HitBack[i]->GetStrip();}; 
+      inline unsigned int GetDetectorBack(const unsigned int& i){return m_HitBack[i]->GetDetector();};
+      inline double GetEnergyBack(const unsigned int& i){return m_HitBack[i]->GetEnergy();};
+      inline double GetTimeBack(const unsigned int& i){return m_HitBack[i]->GetTime();};
+
+
+  };
+
+}
+
+
+#endif
diff --git a/NPSimulation/Scorers/DriftElectronScorers.cc b/NPSimulation/Scorers/DriftElectronScorers.cc
index 81c12c928d2969937aa6909d24ffe6ac2791c68e..916581839056999932c05f87cd00b36c0788c3fe 100644
--- a/NPSimulation/Scorers/DriftElectronScorers.cc
+++ b/NPSimulation/Scorers/DriftElectronScorers.cc
@@ -141,7 +141,8 @@ G4bool PS_DEDigitizer::ProcessHits(G4Step* aStep, G4TouchableHistory*){
   Infos[7] = m_DetectorNumber;
 
   m_Index =  aStep->GetTrack()->GetTrackID()  +  m_DetectorNumber*1e6 ;
-  G4String PID = aStep->GetTrack()->GetDefinition()->GetParticleName();
+  static string PID ;
+  PID = aStep->GetTrack()->GetDefinition()->GetParticleName();
 
     if(PID=="driftelectron"){
         Infos[0] = aStep->GetTrack()->GetWeight();
diff --git a/NPSimulation/Scorers/InteractionScorers.cc b/NPSimulation/Scorers/InteractionScorers.cc
new file mode 100644
index 0000000000000000000000000000000000000000..ee474ca5047124a1de06942512390bf3261960bb
--- /dev/null
+++ b/NPSimulation/Scorers/InteractionScorers.cc
@@ -0,0 +1,79 @@
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : February 2013                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  File old the scorer to record Hit energy,time and position               *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include "InteractionScorers.hh"
+#include "G4UnitsTable.hh"
+using namespace InteractionScorers ;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+vector<InteractionData>::iterator InteractionDataVector::find(const unsigned int& index){
+ for(vector<InteractionData>::iterator it= m_Data.begin()  ; it !=m_Data.end() ; it++){
+    if((*it).GetIndex()==index)
+      return it;
+  }
+  return m_Data.end();
+}
+
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+PS_Interactions::PS_Interactions(G4String name,TInteractionCoordinates* Inter, int depth)  :G4VPrimitiveScorer(name, depth){
+    m_Level = depth;
+    m_InterractionCoordinates=Inter;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+G4bool PS_Interactions::ProcessHits(G4Step* aStep, G4TouchableHistory*){
+  static G4StepPoint* point;
+  point = aStep->GetPreStepPoint();
+  t_Energy = aStep->GetTotalEnergyDeposit();
+  t_Time = point->GetGlobalTime();
+  t_Position  = point->GetPosition();
+  t_Index = aStep->GetTrack()->GetTrackID(); 
+  vector<InteractionData>::iterator it;
+  it = m_DataVector.find(t_Index); 
+  if(it!=m_DataVector.end())
+    it->Add(t_Energy);
+  else
+    m_DataVector.Set(t_Index,t_Energy,t_Time,t_Position.x(),t_Position.y(),t_Position.z(),t_Position.theta(),t_Position.phi());
+
+
+  return TRUE;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Interactions::Initialize(G4HCofThisEvent*){
+  // Clear is called by EventAction
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Interactions::EndOfEvent(G4HCofThisEvent*){
+  unsigned int size = m_DataVector.size();
+
+  for(unsigned int i = 0 ; i < size ; i++)
+     m_InterractionCoordinates->SetInteraction(m_DataVector[i]->GetEnergy(),m_DataVector[i]->GetTime(),m_DataVector[i]->GetPositionX(),m_DataVector[i]->GetPositionY(),m_DataVector[i]->GetPositionZ(),m_DataVector[i]->GetTheta()/deg,m_DataVector[i]->GetPhi()/deg);
+
+  m_DataVector.clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void PS_Interactions::clear(){
+  m_DataVector.clear();
+}
diff --git a/NPSimulation/Scorers/InteractionScorers.hh b/NPSimulation/Scorers/InteractionScorers.hh
new file mode 100644
index 0000000000000000000000000000000000000000..2a091e17bc7f0265cd4675d61631654da3b47d97
--- /dev/null
+++ b/NPSimulation/Scorers/InteractionScorers.hh
@@ -0,0 +1,139 @@
+#ifndef InteractionScorers_h
+#define InteractionScorers_h 1
+/*****************************************************************************
+ * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@lpccaen.in2p3.fr    *
+ *                                                                           *
+ * Creation Date  : February 2013                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  File old the scorer to record Hit energy,time and position               *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *****************************************************************************/
+#include "G4VPrimitiveScorer.hh"
+#include "TInteractionCoordinates.h"
+#include "NPImage.h"
+#include <map>
+using namespace std;
+using namespace CLHEP;
+
+namespace InteractionScorers {
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  class InteractionData{
+    public:
+      InteractionData(){m_Index=0;};
+      InteractionData(const unsigned int& Index ,const double& Energy, const double& Time , const double& PositionX, const double& PositionY, const double& PositionZ, const double& Theta, const double& Phi){
+        m_Index = Index;
+        m_Energy = Energy;
+        m_Time = Time;
+        m_PositionX = PositionX;;
+        m_PositionY = PositionY;
+        m_PositionZ = PositionZ;
+        m_Theta = Theta;
+        m_Phi = Phi;
+      }
+
+      ~InteractionData(){};
+
+    private:
+      unsigned int m_Index;
+      double m_Energy;
+      double m_Time;
+      double m_PositionX;
+      double m_PositionY;
+      double m_PositionZ;
+      double m_Theta;
+      double m_Phi;
+
+    public:
+      unsigned int GetIndex() const{return m_Index;};
+      double GetEnergy() const{return m_Energy;};
+      double GetTime() const{return m_Time;};
+      double GetPositionX() const{return m_PositionX;};
+      double GetPositionY() const{return m_PositionY;};
+      double GetPositionZ() const{return m_PositionZ;};
+      double GetTheta() const{return m_Theta;};
+      double GetPhi() const{return m_Phi;};
+
+
+    public:
+      void Set(const unsigned int& Index, const double& Energy, const double& Time , const double& PositionX, const double& PositionY, const double& PositionZ, const double& Theta, const double& Phi){
+        m_Index = Index;
+        m_Energy = Energy;
+        m_Time = Time;
+        m_PositionX = PositionX;;
+        m_PositionY = PositionY;
+        m_PositionZ = PositionZ;
+        m_Theta = Theta;
+        m_Phi = Phi;
+      }
+      void Add(const double& Energy){m_Energy+=Energy;};
+      unsigned int GetIndex(){return m_Index;};
+  };
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  // Manage a vector of Interaction hit
+  class InteractionDataVector{
+    public:
+      InteractionDataVector(){};
+      ~InteractionDataVector(){};
+
+    private:
+      vector<InteractionData> m_Data;
+
+    public:
+      vector<InteractionData>::iterator find(const unsigned int& index) ;
+      void clear(){m_Data.clear();} ;
+      vector<InteractionData>::iterator end() {return m_Data.end();};
+      vector<InteractionData>::iterator begin() {return m_Data.begin();};
+      unsigned int size() {return m_Data.size();};
+      void Add(const unsigned int& index,const double& Energy) {find(index)->Add(Energy);};
+      void Set(const unsigned int& index,const double& Energy, const double& Time , const double& PositionX, const double& PositionY, const double& PositionZ, const double& Theta, const double& Phi) {m_Data.push_back(InteractionData(index,Energy,Time,PositionX,PositionY,PositionZ,Theta,Phi));};
+      InteractionData* operator[](const unsigned int& i){return &m_Data[i];};
+  };
+
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  class PS_Interactions : public G4VPrimitiveScorer{
+
+    public: // with description
+      PS_Interactions(G4String name, TInteractionCoordinates* Inter,G4int depth=0);
+      ~PS_Interactions(){};
+
+    protected: // with description
+      G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+    public:
+      void Initialize(G4HCofThisEvent*);
+      void EndOfEvent(G4HCofThisEvent*);
+      void clear();
+      void DrawAll(){};
+      void PrintAll(){m_InterractionCoordinates->Dump();};
+
+      // Level at which to find the copy number linked to the detector number
+      G4int    m_Level;
+
+    private:
+      InteractionDataVector m_DataVector;
+      TInteractionCoordinates* m_InterractionCoordinates; 
+      unsigned int t_Index;
+      double t_Energy;
+      double t_Time;
+      G4ThreeVector t_Position;
+  };
+
+}
+
+
+#endif
diff --git a/NPSimulation/Scorers/TPCScorers.cc b/NPSimulation/Scorers/TPCScorers.cc
index 29b4557181ad5edb45a0052b27ce7d0a21feb305..8fdad11fd127519790d9d45a933df1f6dbe6571e 100644
--- a/NPSimulation/Scorers/TPCScorers.cc
+++ b/NPSimulation/Scorers/TPCScorers.cc
@@ -1,6 +1,5 @@
 /*****************************************************************************
  * Copyright (C) 2009-2016   this file is part of the NPTool Project         *
- *                                                                           *
  * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
  * For the list of contributors see $NPTOOL/Licence/Contributors             *
  *****************************************************************************/
@@ -21,12 +20,21 @@
  *****************************************************************************/
 #include "TPCScorers.hh"
 #include "G4UnitsTable.hh"
-using namespace TPCSCORERS ;
+using namespace TPCScorers;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+vector<CathodeData>::iterator CathodeDataVector::find(const unsigned int& index){
+  for(vector<CathodeData>::iterator it= m_Data.begin()  ; it !=m_Data.end() ; it++){
+    if((*it).GetIndex()==index)
+      return it;
+  }
+  return m_Data.end();
+}
+
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 PS_TPCCathode::PS_TPCCathode(G4String name,G4int depth)
-:G4VPrimitiveScorer(name, depth),HCID(-1){
-    m_Index = -1 ;
+:G4VPrimitiveScorer(name, depth){
     m_Level = depth;
 }
 
@@ -36,60 +44,39 @@ PS_TPCCathode::~PS_TPCCathode(){
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4bool PS_TPCCathode::ProcessHits(G4Step* aStep, G4TouchableHistory*){
-    
-    // contain Energy Time, DetNbr, StripFront and StripBack
-    G4double* Infos = new G4double[10];
-    Infos[0] = 0;
-    Infos[1] = aStep->GetPreStepPoint()->GetProperTime();
-    
-    m_DetectorNumber = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_Level);
-    m_Position  = aStep->GetPreStepPoint()->GetPosition();
-    
-    // Interaction coordinates (used to fill the InteractionCoordinates branch)
-    Infos[2] = m_Position.x();
-    Infos[3] = m_Position.y();
-    Infos[4] = m_Position.z();
-    Infos[5] = m_Position.theta();
-    Infos[6] = m_Position.phi();
-    Infos[7] = m_DetectorNumber;
-    
-    
+ 
+ 
     G4String PID = aStep->GetTrack()->GetDefinition()->GetParticleName();
     
-    m_Position = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(m_Position);
-    
-    
-    Infos[8] = (int)((m_Position.z()+128)/2);
-    Infos[9] = (int)((m_Position.x()+128)/2);
-    
-    m_Index = Infos[8] + 128*Infos[9] ;
-    
-    
-    if(PID=="driftelectron"){
-        Infos[0] = aStep->GetTrack()->GetWeight();
+    if(PID!="driftelectron"){
+      return false;
     }
+ 
+    // contain Energy Time, DetNbr, StripFront and StripBack
+    t_Charge = aStep->GetTrack()->GetWeight();
+    t_Time = aStep->GetPreStepPoint()->GetProperTime();
     
-    // Check if the particle has interact before, if yes, add up the number of electron.
-    map<G4int, G4double**>::iterator it;
-    it= EvtMap->GetMap()->find(m_Index);
-    if(it!=EvtMap->GetMap()->end()){
-        G4double* dummy = *(it->second);
-        Infos[0]+=dummy[0];
-        Infos[1]=dummy[1];
-        delete dummy;
-    }
+    t_Detector = aStep->GetPreStepPoint()->GetTouchableHandle()->GetCopyNumber(m_Level);
+    t_Position = aStep->GetPreStepPoint()->GetPosition();
+    t_Position = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(t_Position);
     
-    EvtMap->set(m_Index, Infos);
+    t_PadX = (int)((t_Position.z()+128)/2);
+    t_PadY = (int)((t_Position.x()+128)/2);
+    
+    vector<CathodeData>::iterator it;
+    it = m_Data.find(CathodeData::CalculateIndex(t_Detector,t_PadX,t_PadY));
+    if(it!= m_Data.end())
+      it->Add(t_Charge); 
+      
+    else
+      m_Data.Set(t_Charge,t_Time,t_Detector,t_PadX,t_PadY);
+
     return TRUE;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void PS_TPCCathode::Initialize(G4HCofThisEvent* HCE){
-    EvtMap = new NPS::HitsMap<G4double*>(GetMultiFunctionalDetector()->GetName(), GetName());
-    if (HCID < 0) {
-        HCID = GetCollectionID(0);
-    }
-    HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+void PS_TPCCathode::Initialize(G4HCofThisEvent*){
+  m_Data.clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -98,12 +85,7 @@ void PS_TPCCathode::EndOfEvent(G4HCofThisEvent*){
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void PS_TPCCathode::clear(){
-    std::map<G4int, G4double**>::iterator    MapIterator;
-    for (MapIterator = EvtMap->GetMap()->begin() ; MapIterator != EvtMap->GetMap()->end() ; MapIterator++){
-        delete *(MapIterator->second);
-    }
-    
-    EvtMap->clear();
+   m_Data.clear();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -113,8 +95,5 @@ void PS_TPCCathode::DrawAll(){
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void PS_TPCCathode::PrintAll(){
-    G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
-    G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
-    G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/NPSimulation/Scorers/TPCScorers.hh b/NPSimulation/Scorers/TPCScorers.hh
index 6a3bc6db43e35d97a891b0535a412382d4d3f036..fdb3b25238b709ad3f57efadf0984cb1620f77d5 100644
--- a/NPSimulation/Scorers/TPCScorers.hh
+++ b/NPSimulation/Scorers/TPCScorers.hh
@@ -30,65 +30,133 @@
 using namespace std;
 using namespace CLHEP;
 
-namespace TPCSCORERS {
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......  
-  class PS_TPCCathode : public G4VPrimitiveScorer{
-    
-  public: // with description
-    PS_TPCCathode(G4String name,G4int depth=0);
-     ~PS_TPCCathode();
-    
-  protected: // with description
-     G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+namespace TPCScorers{
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......  
+  class CathodeData{
+    public:
+      CathodeData(){};
+      CathodeData(const double& Charge, const double& Time,const unsigned int& Detector, const unsigned int& PadX, const unsigned int& PadY){
+        m_Charge = Charge;
+        m_Time   = Time;
+        m_Detector = Detector;
+        m_PadX   = PadX;
+        m_PadY   = PadY;
+        m_Index = CalculateIndex(m_Detector,m_PadX,m_PadY);
+      }
+      ~CathodeData(){};
     
-  public:
-    void Initialize(G4HCofThisEvent*);
-    void EndOfEvent(G4HCofThisEvent*);
-    void clear();
-    void DrawAll();
-    void PrintAll();
+   private:
+     unsigned int m_Index;
+     double m_Charge;
+     double m_Time;
+     unsigned int m_Detector;
+     unsigned int m_PadX;
+     unsigned int m_PadY;
+   
+   public:
+     static unsigned int CalculateIndex(const unsigned int& DetectorNumber,const unsigned int& PadX, const unsigned int& PadY){return DetectorNumber+PadX*1e3+PadY*3e6;};
+     inline unsigned int GetIndex() const {return m_Index;};
+     inline double GetCharge() const {return m_Charge;};
+     inline double GetTime() const {return m_Time;};
+     inline unsigned int GetDetector() const {return m_Detector;};
+     inline unsigned int GetPadX() const {return m_PadX;};
+     inline unsigned int GetPadY() const {return m_PadY;};
+     void Add(const double& Charge){m_Charge+=Charge;};
+  };
+
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......  
+   // Manage a vector of Cathode hit
+  class CathodeDataVector{
+    public:
+      CathodeDataVector(){};
+      ~CathodeDataVector(){};
+
+    private:
+      vector<CathodeData> m_Data;
+
+    public:
+      vector<CathodeData>::iterator find(const unsigned int& index) ;
+      void clear(){m_Data.clear();} ;
+      vector<CathodeData>::iterator end() {return m_Data.end();};
+      vector<CathodeData>::iterator begin() {return m_Data.begin();};
+      unsigned int size() {return m_Data.size();};
+      void Add(const unsigned int& index,const double& Charge) {find(index)->Add(Charge);};
+      void Set(const double& Charge, const double& Time, const unsigned int& Detector, const unsigned int& PadX, const unsigned int& PadY) {m_Data.push_back(CathodeData(Charge,Time,Detector,PadX,PadY));};
+      CathodeData* operator[](const unsigned int& i){return &m_Data[i];};
+  };
+
+
   
-private: // inherited from G4VPrimitiveScorer
-      G4int HCID;
-      NPS::HitsMap<G4double*>* EvtMap;
-    
-  private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
-      G4int m_Index;
-      G4int m_Level;
-      G4int m_DetectorNumber;
-      G4ThreeVector m_Position;
+  //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......  
+  class PS_TPCCathode : public G4VPrimitiveScorer{
+
+    public: // with description
+      PS_TPCCathode(G4String name,G4int depth=0);
+      ~PS_TPCCathode();
+
+    protected: // with description
+      G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+    public:
+      void Initialize(G4HCofThisEvent*);
+      void EndOfEvent(G4HCofThisEvent*);
+      void clear();
+      void DrawAll();
+      void PrintAll();
+
+   private: 
+      CathodeDataVector m_Data;    
+
+    private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
+      unsigned int m_Level;
+      double t_Charge;
+      double t_Time;
+      unsigned int t_Detector;
+      unsigned int t_PadX;
+      unsigned int t_PadY;
+      G4ThreeVector t_Position;
     
+    public:
+      unsigned int GetMult(){return m_Data.size();};
+      double GetCharge(const double& i) {return m_Data[i]->GetCharge();};
+      double GetTime(const double& i) {return m_Data[i]->GetTime();};
+      unsigned int GetDetector(const unsigned int& i) {return m_Data[i]->GetDetector();};
+      unsigned int GetPadX(const unsigned int& i) {return m_Data[i]->GetPadX();};
+      unsigned int GetPadY(const unsigned int& i) {return m_Data[i]->GetPadY();};
+
+
   };
-//////////////////////////////////////////////////////////////////////////////// 
+/*  //////////////////////////////////////////////////////////////////////////////// 
   class PS_DEDigitizer : public G4VPrimitiveScorer{
-    
-  public: // with description
-    PS_DEDigitizer(G4String name,G4int depth=0);
-     ~PS_DEDigitizer();
-    
-  protected: // with description
-     G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-    
-  public:
-    void Initialize(G4HCofThisEvent*);
-    void EndOfEvent(G4HCofThisEvent*);
-    void clear();
-    void DrawAll();
-    void PrintAll();
-  
-private: // inherited from G4VPrimitiveScorer
+
+    public: // with description
+      PS_DEDigitizer(G4String name,G4int depth=0);
+      ~PS_DEDigitizer();
+
+    protected: // with description
+      G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+    public:
+      void Initialize(G4HCofThisEvent*);
+      void EndOfEvent(G4HCofThisEvent*);
+      void clear();
+      void DrawAll();
+      void PrintAll();
+
+    private: // inherited from G4VPrimitiveScorer
       G4int HCID;
       NPS::HitsMap<G4double*>* EvtMap;
-    
-  private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
+
+    private: // Needed for intermediate calculation (avoid multiple instantiation in Processing Hit)
       G4int m_Index;
       G4int m_Level;
       G4int m_DetectorNumber;
       G4ThreeVector m_Position;
-    
+
   };
-  
 
+*/
 }
 
 #endif
diff --git a/NPSimulation/Simulation.cc b/NPSimulation/Simulation.cc
index b15420bc908d392d02336750a1a3d417ed9d7c72..03a09d5c51b8458fed8a9c024043595f98a21032 100644
--- a/NPSimulation/Simulation.cc
+++ b/NPSimulation/Simulation.cc
@@ -118,7 +118,6 @@ int main(int argc, char** argv){
         UImanager->ApplyCommand("/control/execute " +Path_Macro+"verbose.mac");
 
 #ifdef G4VIS_USE
-         
         UImanager->ApplyCommand("/control/execute " +Path_Macro+"aliases.mac");
         visManager = new G4VisExecutive("Quiet");
         visManager->Initialize();
@@ -136,6 +135,9 @@ int main(int argc, char** argv){
         
 #endif
     }
+    else{// if batch mode do not accumulate any track
+       UImanager->ApplyCommand("/vis/scene/endOfEventAction accumulate 0");
+      }
     // Execute user macro
     if(!OptionManager->IsDefault("G4MacroPath")){
         UImanager->ApplyCommand("/control/execute "+ OptionManager->GetG4MacroPath());
diff --git a/NPSimulation/ressources/macro/vis.mac.in b/NPSimulation/ressources/macro/vis.mac.in
index 1f5278571fefb39eff468cba0f429b8e3b83c887..90eb72614f2f1685cf5abb97e95c0c5f7db76154 100644
--- a/NPSimulation/ressources/macro/vis.mac.in
+++ b/NPSimulation/ressources/macro/vis.mac.in
@@ -49,7 +49,7 @@
 /vis/modeling/trajectories/select DrawByParentID
 
 # To superimpose all of the events from a given run:
-/vis/scene/endOfEventAction accumulate
+/vis/scene/endOfEventAction accumulate 10
 
 # Re-establish auto refreshing and verbosity:
 /vis/viewer/set/autoRefresh true
diff --git a/Outputs/.gitignore b/Outputs/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Outputs/Analysis/.gitignore b/Outputs/Analysis/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Outputs/Simulation/.gitignore b/Outputs/Simulation/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Projects/Actar/Analysis.cxx b/Projects/Actar/Analysis.cxx
index 871dc451858b90a42ee543559542a2325ca1bdea..95729ddb778e98cea987a50662eda505a0a419a2 100644
--- a/Projects/Actar/Analysis.cxx
+++ b/Projects/Actar/Analysis.cxx
@@ -39,34 +39,42 @@ Analysis::~Analysis(){
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::Init(){
     Actar= (TActarPhysics*) m_DetectorManager->GetDetector("Actar");
-    
+    ReactionConditions = new TReactionConditions();
+
     Actar->ReadAnalysisConfig();
     if(Actar->GetRansacStatus()){
         Actar->SetRansacParameter("./configs/RansacConfig.dat");
     }
-    
+
     DriftVelocity = Actar->GetDriftVelocity();
     PadSizeX = Actar->GetPadSizeX();
     PadSizeY = Actar->GetPadSizeY();
     NumberOfPadsX = Actar->GetNumberOfPadsX();
     NumberOfPadsY = Actar->GetNumberOfPadsY();
-    
-    EnergyLoss_3He = NPL::EnergyLoss("EnergyLossTable/He3_D2_6.24151e+08_295.G4table","G4Table",100);
-    EnergyLoss_17C = NPL::EnergyLoss("EnergyLossTable/C17_D2_6.24151e+08_295.G4table","G4Table",100);
+
+    EnergyLoss_3He = NPL::EnergyLoss("./EnergyLossTable/He3_D2_6.24151e+08_295.G4table","G4Table",100);
+    EnergyLoss_17C = NPL::EnergyLoss("./EnergyLossTable/C17_D2_6.24151e+08_295.G4table","G4Table",100);
     TheReaction = new NPL::Reaction("17C(d,3He)16B@510");
-    
+
     InitOutputBranch();
+    InitInputBranch();
 }
 
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::TreatEvent(){
     ReInitValue();
     
+    if(ReactionConditions->GetParticleMultiplicity()>0){
+      InitXVertex = ReactionConditions->GetVertexPositionZ();
+      InitE3      = ReactionConditions->GetKineticEnergy(0);
+      InitTheta3  = ReactionConditions->GetTheta(0);
+    }
+
     int TrackMult = Actar->GetTrackMult();
-    
+
     TVector3 vX = TVector3(1,0,0);
     TVector3 aTrack, vB;
-    
+
     if(TrackMult>1){
         vTrack = Actar->GetTracks();
         double scalarproduct=0;
@@ -83,37 +91,37 @@ void Analysis::TreatEvent(){
                 scalarproduct=scalar;
             }
         }
-        
+
         double XBeam = vTrack[BeamTrack].GetDirectionVector().X();
         double YBeam = vTrack[BeamTrack].GetDirectionVector().Y();
         double ZBeam = vTrack[BeamTrack].GetDirectionVector().Z();
         TVector3 vBeam = TVector3(XBeam,YBeam,ZBeam);
-        
+
         double XBeamPoint = vTrack[BeamTrack].GetXh();
         double YBeamPoint = vTrack[BeamTrack].GetYh();
         double ZBeamPoint = vTrack[BeamTrack].GetZh();
         TVector3 vBeamPos = TVector3(XBeamPoint,YBeamPoint,ZBeamPoint);
-        
+
         vB = TVector3(XBeam*PadSizeX, YBeam*PadSizeY,ZBeam*DriftVelocity);
         BeamAngle = (vX.Angle(vB))*180/TMath::Pi();
-        
+
         for(unsigned int i=0; i<TrackMult; i++){
             if(i!=BeamTrack){
                 double Xdir = vTrack[i].GetDirectionVector().X();
                 double Ydir = vTrack[i].GetDirectionVector().Y();
                 double Zdir = vTrack[i].GetDirectionVector().Z();
-                
+
                 XVertex.push_back(vTrack[i].GetVertexPostion(vBeam,vBeamPos).X()*PadSizeX);
                 YVertex.push_back(vTrack[i].GetVertexPostion(vBeam,vBeamPos).Y()*PadSizeY);
                 ZVertex.push_back(vTrack[i].GetVertexPostion(vBeam,vBeamPos).Z()*DriftVelocity);
-                                
+
                 aTrack = TVector3(Xdir*PadSizeX, Ydir*PadSizeY, Zdir*DriftVelocity);
-                
-                
+
+
                 double angle = vX.Angle(aTrack)*180/TMath::Pi();
-                //double angle = vX.Angle(aTrack)*180/TMath::Pi();
+                //double angle = vB.Angle(aTrack)*180/TMath::Pi();
                 if(angle>90) angle = 180-angle;
-                
+
                 double x1 = vTrack[i].GetXm()*PadSizeX;
                 double x2 = vTrack[i].GetXh()*PadSizeX;
                 double y1 = vTrack[i].GetYm()*PadSizeY-0.5*NumberOfPadsY*PadSizeY;
@@ -122,30 +130,30 @@ void Analysis::TreatEvent(){
                 //double z2 = -(vTrack[i].GetZh()-256)*DriftVelocity;
                 double z1 = vTrack[i].GetZm()*DriftVelocity;
                 double z2 = vTrack[i].GetZh()*DriftVelocity;
-                
+
                 GetMayaSiHitPosition(x1,x2,y1,y2,z1,z2);
-                
+
                 if(XVertex[i]>0 && XVertex[i]<256){
-                    double SiDistanceToPadPlane = 47*mm;
-                    double LengthInGas = 256-XVertex[i] + SiDistanceToPadPlane;
+                    double LengthInGas = fSiDistanceX - XVertex[i];
                     for(unsigned int k=0; k<Actar->Si_E.size(); k++){
-                        ESi.push_back(Actar->Si_E[k]);
-                        SiNumber.push_back(Actar->Si_Number[k]);
-                        DE.push_back(vTrack[i].GetPartialCharge(108,128)/(20./cos(angle*TMath::Pi()/180)));
-                        double E3 = EnergyLoss_3He.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
-                        double BeamEnergy = EnergyLoss_17C.Slow(510*MeV,(XVertex[i]+60)*mm, BeamAngle*TMath::Pi()/180);
-                        TheReaction->SetBeamEnergy(BeamEnergy);
-                        ELab.push_back(E3);
-                        ThetaLab.push_back(angle);
-                        TheReaction->SetNuclei3(E3,angle*TMath::Pi()/180);
-                        Ex.push_back(TheReaction->GetExcitation4());
-                        ThetaCM.push_back(TheReaction->GetThetaCM()*180./TMath::Pi());
+                      ESi.push_back(Actar->Si_E[k]);
+                      SiNumber.push_back(Actar->Si_Number[k]);
+
+                      DE.push_back(vTrack[i].GetPartialCharge(108,128)/(20./cos(angle*TMath::Pi()/180)));
+                      double E3 = EnergyLoss_3He.EvaluateInitialEnergy(Actar->Si_E[k]*MeV,LengthInGas*mm,angle*TMath::Pi()/180);
+                      double BeamEnergy = EnergyLoss_17C.Slow(510*MeV,(XVertex[i]+60)*mm, BeamAngle*TMath::Pi()/180);
+                      TheReaction->SetBeamEnergy(BeamEnergy);
+                      ELab.push_back(E3);
+                      ThetaLab.push_back(angle);
+                      TheReaction->SetNuclei3(E3,angle*TMath::Pi()/180);
+                      Ex.push_back(TheReaction->GetExcitation4());
+                      ThetaCM.push_back(TheReaction->GetThetaCM()*180./TMath::Pi());
                     }
                 }
             }
         }
     }
-    
+
     //for(unsigned int i=0; i<Actar->PadX.size(); i++){
         //cout << "X= " << Actar->PadX[i] << endl;
     //}
@@ -154,17 +162,47 @@ void Analysis::TreatEvent(){
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::GetMayaSiHitPosition(double xm, double xh, double ym, double yh, double zm, double zh)
 {
-    double l = xm-xh;
-    double L = fSiDistanceX-xm;
-    
-    double t = (l+L)/l;
-    //double t = L/l;
-    
-    double zf = zh + (zm-zh)*t;
-    double yf = yh + (ym-yh)*t;
-    
-    //cout << zf << " " << yf << endl;
-    
+    double X1, X2, Y1, Y2, Z1, Z2;
+
+    if(xm>xh){
+      X1 = xh;
+      Y1 = yh;
+      Z1 = zh;
+
+      X2 = xm;
+      Y2 = ym;
+      Z2 = zm;
+    }
+    else if(xh>xm){
+      X1 = xm;
+      Y1 = ym;
+      Z1 = zm;
+
+      X2 = xh;
+      Y2 = yh;
+      Z2 = zh;
+    }
+
+    double l, L, t;
+    double zf, yf;
+
+    if(fSiDistanceX>X2){
+      L = fSiDistanceX-X2;
+      l = X2 - X1;
+      t = (l+L)/l;
+
+      zf = Z1 + (Z2-Z1)*t;
+      yf = Y1 + (Y2-Y1)*t;
+    }
+    else if(fSiDistanceX<X2){
+      L = X2 - fSiDistanceX;
+      l = fSiDistanceX - X1;
+      t = (l+L)/l;
+
+      zf = Z1 + (Z2-Z1)/t;
+      yf = Y1 + (Y2-Y1)/t;
+    }
+
     SiPosY.push_back(yf);
     SiPosZ.push_back(zf);
 }
@@ -173,6 +211,12 @@ void Analysis::GetMayaSiHitPosition(double xm, double xh, double ym, double yh,
 void Analysis::End(){
 }
 
+////////////////////////////////////////////////////////////////////////////////
+void Analysis::InitInputBranch() {
+  RootInput::getInstance()->GetChain()->SetBranchStatus("ReactionConditions",true);
+  RootInput::getInstance()->GetChain()->SetBranchStatus("fRC_*",true);
+  RootInput::getInstance()->GetChain()->SetBranchAddress("ReactionConditions",&ReactionConditions);
+}
 ////////////////////////////////////////////////////////////////////////////////
 void Analysis::InitOutputBranch() {
     RootOutput::getInstance()->GetTree()->Branch("DE",&DE);
@@ -189,6 +233,9 @@ void Analysis::InitOutputBranch() {
     RootOutput::getInstance()->GetTree()->Branch("BeamAngle",&BeamAngle,"BeamAngle/D");
     RootOutput::getInstance()->GetTree()->Branch("SiPosY",&SiPosY);
     RootOutput::getInstance()->GetTree()->Branch("SiPosZ",&SiPosZ);
+    RootOutput::getInstance()->GetTree()->Branch("InitXVertex",&InitXVertex,"InitXVertex/D");
+    RootOutput::getInstance()->GetTree()->Branch("InitE3",&InitE3,"InitE3/D");
+    RootOutput::getInstance()->GetTree()->Branch("InitTheta3",&InitTheta3,"InitTheta3/D");
 
 }
 
@@ -208,6 +255,9 @@ void Analysis::ReInitValue(){
     SiPosY.clear();
     SiPosZ.clear();
     BeamAngle=-1000;
+    InitXVertex=-1000;
+    InitE3=-1000;
+    InitTheta3=-1000;
 
 }
 
@@ -228,6 +278,6 @@ extern "C"{
             NPL::AnalysisFactory::getInstance()->SetConstructor(Analysis::Construct);
         }
     };
-    
+
     proxy p;
 }
diff --git a/Projects/Actar/Analysis.h b/Projects/Actar/Analysis.h
index f7b74f42e40fe1c2b10285358372898c8fee2d46..b06fb6cfd6f25d1b0d51a2f06981d591737a087b 100644
--- a/Projects/Actar/Analysis.h
+++ b/Projects/Actar/Analysis.h
@@ -26,6 +26,7 @@
 #include "NPEnergyLoss.h"
 #include "NPReaction.h"
 #include "NPTrack.h"
+#include "TReactionConditions.h"
 
 
 
@@ -33,35 +34,39 @@ class Analysis: public NPL::VAnalysis{
 public:
     Analysis();
     ~Analysis();
-    
+
 public:
     void Init();
     void TreatEvent();
     void End();
     void InitOutputBranch();
+    void InitInputBranch();
     void ReInitValue();
     void GetMayaSiHitPosition(double xm, double xh, double ym, double yh, double zm, double zh);
 
-    
-    
+
+
     static NPL::VAnalysis* Construct();
-    
+
 public:
     double DriftVelocity;
     double PadSizeX;
     double PadSizeY;
     int NumberOfPadsX;
     int NumberOfPadsY;
-    
-    
+
+
 private:
-    double fSiDistanceX=128+47;
-    
+    double fSiDistanceX=256+47;
+
     TActarPhysics* Actar;
-    
+
     vector<NPL::Track> vTrack;
-    
+
     double BeamAngle;
+    double InitXVertex;
+    double InitE3;
+    double InitTheta3;
     vector<double> vScalar;
     vector<double> ThetaLab;
     vector<double> ELab;
@@ -75,11 +80,13 @@ private:
     vector<double> ZVertex;
     vector<double> SiPosY;
     vector<double> SiPosZ;
-    
+
     NPL::EnergyLoss EnergyLoss_3He;
     NPL::EnergyLoss EnergyLoss_17C;
     NPL::Reaction* TheReaction;
-    
-    
+
+    TReactionConditions* ReactionConditions;
+
+
 };
 #endif
diff --git a/Projects/Actar/configs/ConfigActar.dat b/Projects/Actar/configs/ConfigActar.dat
index f05aaed2abe78979e80a3c9bfe018d46dafc7001..206903cb7980904998c38ae98050304d0536b6a2 100644
--- a/Projects/Actar/configs/ConfigActar.dat
+++ b/Projects/Actar/configs/ConfigActar.dat
@@ -8,9 +8,8 @@ NumberOfPadsX= 128
 NumberOfPadsY= 128
 PadSizeX= 2
 PadSizeY= 2
-%Gas= iC4H10
-Gas= D2
+Gas= iC4H10
+%Gas= D2
 %Pressure in mbar
-Pressure= 1000 
-%mm/time bucket
+Pressure= 100
 DriftVelocity= 2.66
diff --git a/Projects/SharcEfficiency/configs/ConfigSharc.dat b/Projects/SharcEfficiency/configs/ConfigSharc.dat
index 9c7ea5ce7ca5a0d3cdca49be2792c1abdbe5850d..9b31fee3485f90ad6670ff19f9479b29001d88ed 100644
--- a/Projects/SharcEfficiency/configs/ConfigSharc.dat
+++ b/Projects/SharcEfficiency/configs/ConfigSharc.dat
@@ -1,8 +1,9 @@
+%%% ConfigSharc.dat %%%
 ConfigSharc
-  STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA 20
+  STRIP_ENERGY_MATCHING_NUMBER_OF_SIGMA 15 
   STRIP_ENERGY_MATCHING_SIGMA 0.060
 % Detector 1
-  DISABLE_CHANNEL SH01STRF7
+  DISABLE_CHANNEL SH10STRF7
   DISABLE_CHANNEL SH01STRF13
 % Detector 2
   DISABLE_CHANNEL SH02STRF1
@@ -71,14 +72,9 @@ ConfigSharc
 % Detector 9
   DISABLE_ALL SH09
 % Detector 10
- DISABLE_CHANNEL SH10STRF7
- DISABLE_CHANNEL SH10STRB1
- DISABLE_CHANNEL SH10STRB2
- DISABLE_CHANNEL SH10STRB3
- DISABLE_CHANNEL SH10STRB4
- DISABLE_CHANNEL SH10STRB8
- DISABLE_CHANNEL SH10STRB17
- DISABLE_CHANNEL SH10STRB36
+  DISABLE_CHANNEL SH10STRF24
+  DISABLE_CHANNEL SH10STRB8
+  DISABLE_CHANNEL SH10STRB4
   % Detector 11
   DISABLE_ALL SH11
 % Detector 12
@@ -91,9 +87,6 @@ ConfigSharc
   DISABLE_CHANNEL SH12STRB28
   DISABLE_CHANNEL SH12STRB29
   DISABLE_CHANNEL SH12STRB36
-  DISABLE_CHANNEL SH12STRB45
-  DISABLE_CHANNEL SH12STRB46
-  DISABLE_CHANNEL SH12STRB47
   DISABLE_CHANNEL SH12STRB48
-% PAD threshold
-  PAD_E_THRESHOLD 0.3
+
+