a:6:{i:0;s:36404:"						<section class="headBg theme2 ">
						<div class="wrap">
						<div class="page-title-inner fo"> 
						<div class="h1"><h1>Trekking In Valley Of Flowers Tour</h1></div>
						<p class="breadcrumb ar uu small"><a href="http://www.himalayancove.com/" title="Home">Home</a>
						
													<b class="ffv p2px">&rsaquo;</b><a href="http://www.himalayancove.com/tour-packages.htm" title="Packages">Packages</a>
								
						<b class="ffv p2px">&rsaquo;</b> Trekking In Valley Of Flowers Tour</p>
						</div>
						</div>
						</section>
										<section id="middle"><br />
				<div class="wrap packages" id="bodyFormatNT">
				<div class="row1 dt columns12"><!--MIDDLE ROW1 STARTS-->
				<div class="col-2 wideColumn ip ls"><!--MIDDLE ROW1 COL-2 STARTS-->				
									<div class="fo dt w100"> 
					<div class="dtc vat ttw-detail pr20px pr">					
												<ul class="lsn gallery-slide" id="bxlider_ins">
																	<li>
										<div class="imgFrame m0a dib bdr">
										<div class="imgFrame picBg dtc ac vam lh0">	<a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242806.jpg">
										<div class="imgWidth" style="background-image: url(https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242806.jpg);background-size:cover;background-position:center;"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242806.jpg"  alt="Trekking in Valley of Flowers Tour" title="Trekking in Valley of Flowers Tour" class="imga"  />									</div></a>
										</div>
										</div>
										</li>
																	</ul>
												
					<script>
					var $j = jQuery.noConflict();
					var realSlider= $j("ul#bxlider_ins").bxSlider({
					      speed:500,
					      pager:false,
					      auto: true,
					      slideWidth: 450,
					      slideMargin: 0,
					      nextText:'',
					      prevText:'',
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					        changeRealThumb(realThumbSlider,newIndex);
					        
					      }
					      
					    });
					    
					    var realThumbSlider=$j("ul#bxslider-pager").bxSlider({
					      minSlides: 4,
					      maxSlides: 4,
					      slideWidth: 200,
					      slideMargin: 5,
					      moveSlides: 1,
					      pager:false,
					      speed:1000,
					      infiniteLoop:true,
					      hideControlOnEnd:true,
					      nextText:'<span></span>',
					      prevText:'<span></span>',
					      onSlideBefore:function($slideElement, oldIndex, newIndex){
					
					      }
					    });
					    
					    linkRealSliders(realSlider,realThumbSlider);
					    
					    if($j("#bxslider-pager li").length<5){
					      $j("#bxslider-pager .bx-next").hide();
					    }
					
					// sincronizza sliders realizzazioni
					function linkRealSliders(bigS,thumbS){
					  
					  $j("ul#bxslider-pager").on("click","a",function(event){
					    event.preventDefault();
					    var newIndex=$j(this).parent().attr("data-slideIndex");
					        bigS.goToSlide(newIndex);
					  });
					}
					
					//slider!=$thumbSlider. slider is the realslider
					function changeRealThumb(slider,newIndex){
					  
					  var $thumbS=$j("#bxslider-pager");
					  $thumbS.find('.active').removeClass("active");
					  $thumbS.find('li[data-slideIndex="'+newIndex+'"]').addClass("active");
					  
					  if(slider.getSlideCount()-newIndex>=4)slider.goToSlide(newIndex);
					  else slider.goToSlide(slider.getSlideCount()-4);
					
					}
					
					</script>
					</div>
			        <div class="dtc">
			        <p class="b xlarge mb10px">Trekking in Valley of Flowers Tour</p>
					
											<p class="mb5px"><b>Duration :</b> 
						5 Nights / 6 Days 
						</p>
												<p class="mb5px"><b>Destination Covered :</b> Haridwar, Joshimath, Rishikesh, Hemkund Sahib, Ghangaria</p>
												<div class="fo mt20px mb20px xxlarge">
						<p class="xxlarge b dif mb2px">Price</p>
						<p class="xxsmall">On Request</p>
						</div>
												<div class="mt12px mb7px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Trekking in Valley of Flowers Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="buttonBig p10px20px c5px ts0 xxlarge dib">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="158522"/>
						</form>
						
												</div>
											<br/>
					</div>       
					</div>
											<div class="mt30px mb30px">
						<div class="b xxlarge mb10px">
								   					Overview
		   											</div>					
						<p class="aj">Region:<br />
<br />
 Uttarakhand Chamoli District<br />
<br />
Duration:<br />
<br />
 6 Days/ 5 Night<br />
<br />
Grade:<br />
<br />
 Easy to Moderate<br />
<br />
Max Altitude:<br />
<br />
 14,107 ft.<br />
<br />
Approx Trekking Km:<br />
<br />
 47 Kms.<br />
<br />
Best Season:<br />
<br />
 June to Early September <br />
<br />
About the Destination<br />
Known as the most beautiful flower valley in the world, Valley of flower is a National park is located in West Himalaya in Uttarakhand state. There will be no exaggeration to call it “the hidden treasure of Himalayas”, as this splendid valley is famous for its meadows of endemic alpine flowers and a diverse range of fauna.  At 3352 to 3658 meters above sea level, the gentle landscapes of the Valley of Flowers are habitat to some of the rare species of flowers such as Himalayan Cinquefoil (Vajardanti), Saxifraga Brunonis, daisies, calendular, Taraxacum , lilies, poppy, geranium, zinnia and petunia. The landscape of the flower of valley is a large part of the rugged mountains of Nanddevi National Park, together with them, they form unique transit zone between Jhanskar and mountain ranges of the Great Himalaya. The one side of the flower-decked valley, tall cliffs climb to the sky. The other side is guarded by snow-clad high mountains peaks. A serene water stream is glides through the middle of the valley. In the spring and monsoon season, the entire valley is covered with flowers, and sometimes the mist and cloud form over it, which makes it perfect for the picturesque location.<br />
<br />
The place first came to light in 1931 when Frank s Smythe, Eric Shipton, and R.L. Holsworth all British mountaineers lost their way while returning back from Mt. Kamet expedition. They were so mesmerized by the beauty of this valley that they named it “Valley of flower”. Because of the diversely rich flora and fauna, this region has so much significance that it has been visited by mountaineer, botanist, photographers and explorer time to time. The natural habitat of rare Flora and Fauna make it perfect to understand the diversity of Himalayan range. The valley in Nanda Devi National Park is a UNESCO world heritage site and is 8 km long and 2 km wide stretches over an expanse of 87.50 km2.<br />
<br />
About the Trek:-<br />
This trek is a beginner for all those people who wish to travel the Himalayan peaks. The climate of the valley is microclimate and during June to early September the heavy monsoon rainfall happen, hence the valley is lush greenery and this is the best time to visit this valley. The entire valley blossoms with the variety of flowers and lots of little water stream flowing down from the mountain make this place a paradise on Earth. The green meadows and the white clouds covering the snow-clad peaks and the fragrance of flowers take the breath away of the trekkers. This is a must do the trek for mountain lover. This valley is perched at an altitude of 14,400 ft and is one of the favourite treks for travellers and trek lovers. The trek for this valley starts from Govindghat via Joshimath which will lead you to Hemkund Sahib on day three.<br />
<br />
You will come across the several mountain streams through the valley and a high altitude calm lake, Hemkund 4329 meter. This lake is considered as a holy place Sikhs. Hemkund Sahib is also a shrine for Sikhs. It is believed that Guru Govind Singh Meditated near this lake. The seven snow clad mountain is seen on while trekking Valley of flower this will surely make you feel enchanted.  On the fourth day of the trek we will head towards Valley of flower and as you reach closer the valley you will be hit by the fragrance of the flower. Legends say that lots of people feel anxious or sometimes fall unconscious because of the heavy scent of flowers.  <br />
<br />
This is an easy to moderate trek so once the travellers reach the valley all the tiredness and all the sickness turned into an enthusiasm. The radiant flowers make this place a perfect pictorial site. We will spend some time in the natural landscape among the flowers and will head back to Gangharia in the evening.</p>
						</div>
														<div class="mt30px b xlarge">
												   					Detailed Tour Itinerary
				   													</div>		   
								<br/>
																			<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 1											
											:</b> Haridwar/Rishikesh to Joshimath 8-9 h (274.5 km)										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												Our representative will expect you ate Haridwar railway station which is closer to Bus station as well. Soon after the morning breakfast, we will drive uphill to reach Joshimath . We will have our lunch enroute and in the evening we will reach to the winter abode of Lord Badrinath. Dinner and overnight stay in the guest house.															
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 2											
											:</b> Joshimath to GovindGhat to Ghangaria Trek										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												After breakfast in Joshimath, we will drive to reach Govindghat (1828 mt / 22Km). The trekking starts from here. This will be Start trekking towards Ghangaria(3049 mt / 14 km Trek). We will have our lunch on the way to Gangharia. Ghangaria is also known as GOVIND DHAM, there are two treks from here one goes to Hemkund Sahib and other goes to Valley of Flowers. We will stay here for the night.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 3											
											:</b> Ghangaria - Hemkund - Ghangaria										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												Hemkund sahib is around 7 km trek from Gangharia. We will start our trek early in the morning.”Hemkund Sahib” is the world highest Gurudwara at an altitude of 4,329 mts. This is a popular shrine among Sikh and Hindu and receives many travellers during the peak seasons. We will descend the trek to reach Gangharia in the afternoon. Dinner and overnight stay here for this day.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 4											
											:</b> Ghangaria - Valley of Flower - Ghangaria.										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												This is a short trek of 3.2 kms. We will have our breakfast in the morning and head towards Valley of flower. We will pass through some of the amazing natural landscape and snow clad mountain. The whole valley is dotted with varieties of exotic flowers and other wild life species. Take many picture and Return to Ghangria with memories. Dinner and overnight stay.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 5											
											:</b> Ghangaria - GovindGhat – Badrinath- Joshimath										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												We will have our breakfast in the morning and soon get on the trek to return back to Govindghat. A 14km trek for this day and then drive towards Joshimath via Badrinath. Dinner and overnight stay in Joshimath.			
														   
											</div> 
											</div>
																						<div class="product-desc headVr bdr0 mb12px"> 
											<div class="sub-title p15px"><a href="javascript:void(0)" class="clickable db"><b class="dif mr2px">
																							Day 6											
											:</b> Joshimath- Haridwar.										
											
											<span class="fr pr10px"><i class="fa fa-angle-down"></i></span></a></div>
																							<div class="fo product-detail p15px pt0px">
												We will Have our morning breakfast and drive to Rishikesh/Haridwar. We will reach Haridwar in the evening and from here you can depart according to your plan.			
														   
											</div> 
											</div>
																			<script>
								jQuery(document).ready(function() {
									//jQuery('.product-detail').css('display','none');
								    jQuery(".sub-title").click(function() {
								        var $this = jQuery(this);
										  jQuery('.w-title').addClass('h15px',400);
								          $this.find('.w-title').removeClass('h15px',400);
										  jQuery('.product-detail').slideUp();
								          $this.next().slideDown();
								          if($this.find('i').hasClass('fa-angle-up')){
								          	$this.find('i').removeClass('fa-angle-up').addClass('fa-angle-down');
								          } else {
								          	$this.find('i').removeClass('fa-angle-down').addClass('fa-angle-up');
								          }
								        });
									});
								</script>
																<div class="data mt20px p15px">
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Inclusions</p>
								</div>
												
								<ul>
																			<li>Hotel</li>
																						<li>Meals</li>
																						<li>Sightseeing</li>
																			</ul>
								</div>
									
								<div class="data mt20px p15px">            
								<div class="mb7px"> 
								<p class="b xlarge mb10px dib">Terms &amp; Conditions</p>
								</div>				
								<ul>
	<li>Trekking, Tour and adventure actives in Himalayan region carry an inherent risk to life and goods. The natural calamities may cause injury and loss of life, which is beyond any control. Himalayas Adventure does its best to minimize all types of risks, discomfort and hazard to the best of their ability, yet there are chances of accidents, mishaps and deficiency in service.</li>
</ul>

<p><strong>Advisory:</strong>

<ul>
	<li>Any delay from the customer&rsquo;s side will lead to cancellation of trek/ tour/ adventure activities.</li>
	<li>Trekking maybe cancelled due to some unavoidable circumstances i.e- weather condition, govt. notification, land sliding or any other natural calamity.</li>
	<li>Himalayas Adventure reserves the right to discontinue, modify any trek, tour &amp; adventure activities without assigning any reasons or without any prior intimation whatsoever.</li>
	<li>Anybody found to be under the influence of alcohol or drugs medically or physically unfit (any serious ailment, weak heart conditions, epilepsy, asthma, expecting mothers etc.) unfit for any reasons in the wisdom of the trek leader/guide/instructor will not be allowed for trekking /tour/ adventure activities. Request for a refund or a discount in such situation will not be entertained. Decision of the trek lead/guide/management in this regard would be final.</li>
	<li>Total decided package cost will not be affected if there is any reduction in the number of persons</li>
	<li>Minimum required 50% of amount to get confirmed the trek/tour/adventure activities.</li>
</ul>

<p><strong>Cancellation Policy</strong>

<ul>
	<li>If cancellations are made 30 days before the start date of the trip, 25% of total tour cost will be charged as cancellation fees.</li>
	<li>If cancellations are made 10-30 days before the start date of the trip, 50% of total tour cost will be charged as cancellation fees.</li>
	<li>If cancellations are made within 0-10 days before the start date of the trip, 75% of total tour cost will be charged as cancellation fees.</li>
	<li>In case of unforeseen weather conditions or government restrictions, certain activities may be cancelled and in such cases, we will try our best to provide an alternate feasible activity. However no refund will be provided for the same.</li>
</ul>

<p><strong>Refund Policy</strong>

<ul>
	<li>The applicable refund amount will be processed within 10 business days or can be adjusted in other trek or adventure activities.</li>
</ul>								</div>
														
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Trekking in Valley of Flowers Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="158522"/>
						</form>
						</div>
						
										</div>
				<div class="col-3 thinColumn"><!--MIDDLE ROW1 COL-1 STARTS-->
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by City</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-rishikesh.htm" title="Packages in Rishikesh">Rishikesh</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-joshimath.htm" title="Packages in Joshimath">Joshimath</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-haridwar.htm" title="Packages in Haridwar">Haridwar</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-auli.htm" title="Packages in Auli">Auli</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-new-delhi.htm" title="Packages in New Delhi">New Delhi</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-ghangaria.htm" title="Packages in Ghangaria">Ghangaria</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-dehradun.htm" title="Packages in Dehradun">Dehradun</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-corbett.htm" title="Packages in Corbett">Corbett</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-hemkunt-sahib.htm" title="Packages in Hemkund Sahib">Hemkund Sahib</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/packages-in-nainital.htm" title="Packages in Nainital">Nainital</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
										
				</div>
				</div>
				</div>
				</div>
				
				<div class="column_Box mc">
				<div class="tcl bullet divider">
				<div class="h h2"><b class="plusMinus"></b>
				<p class="b dif rHead">Packages by Category</p>
				</div>
				<div class="ic showHide_rp">
				<div class="mt10px">
									<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/adventure-holidays-catid.htm" title="Adventure Packages">Adventure</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/family-holidays-catid.htm" title="Family Packages">Family</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/hill-station-holidays-catid.htm" title="Hill Station Packages">Hill Station</a> <b class="alpha50 bn small">(8)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/religious-pilgrimage-holidays-catid.htm" title="Religious & Pilgrimage Packages">Religious & Pilgrimage</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/lakes-rivers-holidays-catid.htm" title="Lakes & Rivers Packages">Lakes & Rivers</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/trekking-holidays-catid.htm" title="Trekking Packages">Trekking</a> <b class="alpha50 bn small">(5)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/valley-holidays-catid.htm" title="Valley Packages">Valley</a> <b class="alpha50 bn small">(6)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/national-parks-holidays-catid.htm" title="National Parks Packages">National Parks</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/wildlife-nature-holidays-catid.htm" title="Wildlife and Nature Packages">Wildlife and Nature</a> <b class="alpha50 bn small">(1)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px "><a class="dif" href="http://www.himalayancove.com/romantic-holidays-catid.htm" title="Romantic Packages">Romantic</a> <b class="alpha50 bn small">(3)</b></span>
										<span class="dib p5px10px c2px headVr mr7px mb7px spanlist dn"><a class="dif" href="http://www.himalayancove.com/heritage-holidays-catid.htm" title="Heritage Packages">Heritage</a> <b class="alpha50 bn small">(2)</b></span>
										<span class="uu db ar"><a class="showallspan" data-target="show" href="javascript:void(0)" >View More</a></span>
						
				</div>
				</div>
				</div>
				</div>
				
				
				</div>
				</div>
				
										<br />
						<div class="row1"> 
						<div class="col-1"> 
						<div class="mt30px">
						<p class="xxlarge b pb10px bdrB db"> Similar Tour Packages for Haridwar, Joshimath, Rishikesh, Hemkund Sahib, Ghangaria</p>
						</div>
						<br/>
						<div class="cf_3img">
						<ul class="lsn m0px p0px fo idv_eqheight cols_similar">
											
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.himalayancove.com/tour-packages/swiss-camping-rishikesh-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/298809.JPG"  alt="Swiss Camping Rishikesh Tour" title="Swiss Camping Rishikesh Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.himalayancove.com/tour-packages/swiss-camping-rishikesh-tour.htm" title="Swiss Camping Rishikesh Tour"><h3>Swiss Camping Rishikesh Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								1 Day 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Rishikesh</p>
															<div class="mt10px small">
							<form name="pkg_190194" id="pkg_190194" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.himalayancove.com/tour-packages/swiss-camping-rishikesh-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Swiss Camping Rishikesh Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="190194"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.himalayancove.com/tour-packages/windsor-cottages-lansdowne-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/298804.jpg"  alt="Windsor Cottages Lansdowne Tour" title="Windsor Cottages Lansdowne Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.himalayancove.com/tour-packages/windsor-cottages-lansdowne-tour.htm" title="Windsor Cottages Lansdowne Tour"><h3>Windsor Cottages Lansdowne Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								1 Day 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Rishikesh</p>
															<div class="mt10px small">
							<form name="pkg_190193" id="pkg_190193" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.himalayancove.com/tour-packages/windsor-cottages-lansdowne-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Windsor Cottages Lansdowne Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="190193"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.himalayancove.com/tour-packages/haridwar-rishikesh-with-auli-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242747.jpg"  alt="Haridwar Rishikesh with Auli Tour" title="Haridwar Rishikesh with Auli Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.himalayancove.com/tour-packages/haridwar-rishikesh-with-auli-tour.htm" title="Haridwar Rishikesh with Auli Tour"><h3>Haridwar Rishikesh With Auli Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								4 Nights / 5 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Joshimath, Rishikesh, Auli</p>
															<div class="mt10px small">
							<form name="pkg_158465" id="pkg_158465" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.himalayancove.com/tour-packages/haridwar-rishikesh-with-auli-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Haridwar Rishikesh with Auli Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="158465"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.himalayancove.com/tour-packages/chopta-chandrashila-deoria-tal-trek-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242772.jpg"  alt="Chopta - Chandrashila - Deoria Tal Trek Tour" title="Chopta - Chandrashila - Deoria Tal Trek Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.himalayancove.com/tour-packages/chopta-chandrashila-deoria-tal-trek-tour.htm" title="Chopta - Chandrashila - Deoria Tal Trek Tour"><h3>Chopta - Chandrashila - Deoria Tal Trek To..</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								3 Nights / 4 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Haridwar, Rishikesh</p>
															<div class="mt10px small">
							<form name="pkg_158490" id="pkg_158490" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.himalayancove.com/tour-packages/chopta-chandrashila-deoria-tal-trek-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Chopta - Chandrashila - Deoria Tal Trek Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="158490"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.himalayancove.com/tour-packages/trekkingin-kuari-pass-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242784.jpg"  alt="Trekking in Kuari Pass Tour" title="Trekking in Kuari Pass Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.himalayancove.com/tour-packages/trekkingin-kuari-pass-tour.htm" title="Trekking in Kuari Pass Tour"><h3>Trekking In Kuari Pass Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								5 Nights / 6 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Joshimath, Rishikesh, Auli</p>
															<div class="mt10px small">
							<form name="pkg_158502" id="pkg_158502" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.himalayancove.com/tour-packages/trekkingin-kuari-pass-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Trekking in Kuari Pass Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="158502"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
												
							<li>
							<div class="bdr">
							<div class="cp" onclick="location.href='http://www.himalayancove.com/tour-packages/trekkingin-rishikesh-tour.htm'">
															<div class="picBg ac vam lh0"><img src="https://ttw.wlimg.com/package-images/photo-big/dir_18/533222/242769.jpg"  alt="Trekking in Rishikesh Tour" title="Trekking in Rishikesh Tour"  class="bdr p1px"  /></div>
															
							<div class="headHr bdr0 p7px b ml2px mr2px mt1px large tp-head"><a href="http://www.himalayancove.com/tour-packages/trekkingin-rishikesh-tour.htm" title="Trekking in Rishikesh Tour"><h3>Trekking In Rishikesh Tour</h3></a></div>
							<div class="bdrT p12px">
															<div class="b large dif pt5px pb5px">Price On Request</div>
																<p class="mt7px"><b class="alpha50">Duration</b> : 
								2 Nights / 3 Days 
								</p>
																<p class="mt2px"><b class="alpha50">Destinations Covered</b> :  Rishikesh</p>
															<div class="mt10px small">
							<form name="pkg_158487" id="pkg_158487" method="post" action="http://www.himalayancove.com/enquiry-form-10002.htm">
							<a class="theme1 dib p5px10px ts0 b c5px lh15em" href="http://www.himalayancove.com/tour-packages/trekkingin-rishikesh-tour.htm" title="View Details">View Details</a> 
							<input type="hidden" name="subject" value="Trekking in Rishikesh Tour - Tour Package"/>
							<input type="hidden" name="allocate_type" value="tour"/>
							<button type="submit" class="theme2 p5px10px ts0 b dib c5px bdr0 lh15em">Book Your Tour</button>
							<input type="hidden" name="pkg_slno" value="158487"/>
							</form>
							</div>
							</div>
							</div>
							</div>
							</li>
															
						</ul>
						</div>
						</div> 		  
						<br>
						</div>  
						<br />
										
				</div>
				</section>
				
				<script>
					window.addEventListener("DOMContentLoaded", function(){
						jQuery(document).on("click", ".showallspan", function(){
							if(jQuery(this).attr("data-target") === 'show'){
								jQuery(this).text("View Less");
								jQuery(this).attr("data-target", "hide");
								jQuery(this).closest("div").find(".spanlist").removeClass("dn");
							}else{
								jQuery(this).text("View More");
								jQuery(this).attr("data-target", "show");
								jQuery(this).closest("div").find(".spanlist").addClass("dn");
							}
						});
					});
				</script>
				";i:1;s:73:"Book Trekking in Valley of Flowers Tour - 5 Nights / 6 Days Tour Packages";i:2;s:170:"book trekking in valley of flowers tour - 5 nights / 6 days tour packages, adventure tour packages, haridwar, joshimath, rishikesh, hemkund sahib, ghangaria tour packages";i:3;s:216:"Book Trekking in Valley of Flowers Tour - 5 Nights / 6 Days tour packages from Himalayan Cove - Get attractive 5 Nights / 6 Days Adventure  tour packages for  Haridwar, Joshimath, Rishikesh, Hemkund Sahib, Ghangaria.";i:4;s:4453:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Haridwar, Joshimath, Rishikesh, Hemkund Sahib, Ghangaria"        
		                 },
		      "description": "Region:

 Uttarakhand Chamoli District

Duration:

 6 Days/ 5 Night

Grade:

 Easy to Moderate

Max Altitude:

 14,107 ft.

Approx Trekking Km:

 47 Kms.

Best Season:

 June to Early September 

About the Destination
Known as the most beautiful flower valley in the world, Valley of flower is a National park is located in West Himalaya in Uttarakhand state. There will be no exaggeration to call it “the hidden treasure of Himalayas”, as this splendid valley is famous for its meadows of endemic alpine flowers and a diverse range of fauna.  At 3352 to 3658 meters above sea level, the gentle landscapes of the Valley of Flowers are habitat to some of the rare species of flowers such as Himalayan Cinquefoil (Vajardanti), Saxifraga Brunonis, daisies, calendular, Taraxacum , lilies, poppy, geranium, zinnia and petunia. The landscape of the flower of valley is a large part of the rugged mountains of Nanddevi National Park, together with them, they form unique transit zone between Jhanskar and mountain ranges of the Great Himalaya. The one side of the flower-decked valley, tall cliffs climb to the sky. The other side is guarded by snow-clad high mountains peaks. A serene water stream is glides through the middle of the valley. In the spring and monsoon season, the entire valley is covered with flowers, and sometimes the mist and cloud form over it, which makes it perfect for the picturesque location.

The place first came to light in 1931 when Frank s Smythe, Eric Shipton, and R.L. Holsworth all British mountaineers lost their way while returning back from Mt. Kamet expedition. They were so mesmerized by the beauty of this valley that they named it “Valley of flower”. Because of the diversely rich flora and fauna, this region has so much significance that it has been visited by mountaineer, botanist, photographers and explorer time to time. The natural habitat of rare Flora and Fauna make it perfect to understand the diversity of Himalayan range. The valley in Nanda Devi National Park is a UNESCO world heritage site and is 8 km long and 2 km wide stretches over an expanse of 87.50 km2.

About the Trek:-
This trek is a beginner for all those people who wish to travel the Himalayan peaks. The climate of the valley is microclimate and during June to early September the heavy monsoon rainfall happen, hence the valley is lush greenery and this is the best time to visit this valley. The entire valley blossoms with the variety of flowers and lots of little water stream flowing down from the mountain make this place a paradise on Earth. The green meadows and the white clouds covering the snow-clad peaks and the fragrance of flowers take the breath away of the trekkers. This is a must do the trek for mountain lover. This valley is perched at an altitude of 14,400 ft and is one of the favourite treks for travellers and trek lovers. The trek for this valley starts from Govindghat via Joshimath which will lead you to Hemkund Sahib on day three.

You will come across the several mountain streams through the valley and a high altitude calm lake, Hemkund 4329 meter. This lake is considered as a holy place Sikhs. Hemkund Sahib is also a shrine for Sikhs. It is believed that Guru Govind Singh Meditated near this lake. The seven snow clad mountain is seen on while trekking Valley of flower this will surely make you feel enchanted.  On the fourth day of the trek we will head towards Valley of flower and as you reach closer the valley you will be hit by the fragrance of the flower. Legends say that lots of people feel anxious or sometimes fall unconscious because of the heavy scent of flowers.  

This is an easy to moderate trek so once the travellers reach the valley all the tiredness and all the sickness turned into an enthusiasm. The radiant flowers make this place a perfect pictorial site. We will spend some time in the natural landscape among the flowers and will head back to Gangharia in the evening.",
		      "name": "Trekking in Valley of Flowers Tour",
		      "telephone": "+91-9871364441"
		    }
		    </script>
			";i:5;N;}