Sum of Columns Base on First Column

Input :-

Hd1;Hd2:hd3;Hd4;Hd5
X;1;2;3;4
Y;2;3;5;6
Z;3;5;6;7
X;10;11;24;16
Y;11;23;21;1
Z;10;13;14;15
X;0;1;2;0
K;0;0;0;0
K;0;0;0;0

I want Sum Data base on first column;

Hd1;Hd2:hd3;Hd4;Hd5
X;11;14;29;20
Y;12;26;26;7
Z;13;18;20;22
K;0;0;0;0

I Know how to do one Column but this input have multiples Column

awk  '{for(i=1;i<=NF;i++){if(i==1){Q=$1} else {A[Q OFS i]+=$i}}} END{for(y in A){W=y;gsub(/[[:space:]].*/,X,W);while(p<=NF){D[W]=D[W] OFS A[W OFS p];p++};while(k<=NF){delete A[W OFS k];k++};p="";k=""} { for(t in D){print t OFS D[t]}}}' Data.txt

I have Change space with ;

The trick is to record which $1 values occur. Then you can use that to enumerate. Try:

awk '
  NR==1 {
    print
    next
  }

  {
    A[$1]
    for(j=2;j<=NF;j++) T[$1,j]+=$j
  }

  END {
    n=NF
    for(i in A) {
      $1=i
      for(j=2; j<=n; j++) $j=T[i,j]
      print
    }
  }
' FS=\; OFS=\; file

can we wright in one Line!

a bit verbose, but..
awk -f pare.awk FS=';' myFile.txt where pare.awk is:

FNR==1 {h=$0;next}
{
  for (i=2;i<=NF;i++)
    a[$1,i]+=$i
  n[$1]
  nf=NF
}
END {
  print h
  for(i in n) {
    printf i FS
    for(j=2;j<=nf;j++)
      printf("%d%s", a[i,j], (j==nf)?ORS:FS)
    }
}

---------- Post updated at 03:43 PM ---------- Previous update was at 03:41 PM ----------

why?

No..That's Good....