a:6:{i:0;s:10763:"				<div class="h1"><h1>Wilderness of Madhya Pradesh5D/4N</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sanskrutivacations.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.sanskrutivacations.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Wilderness of Madhya Pradesh5D/4N</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Bandhavgarh, Umaria, Kanha</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 20650 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Wilderness of Madhya Pradesh5D/4N - 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="82784"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_14/393874/146682.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_14/393874/146682.jpg"  width="150" height="150"    alt="Wilderness of Madhya Pradesh5D/4N" title="Wilderness of Madhya Pradesh5D/4N" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Accommodation on twin Sharing Basis. <br />
Meal Plan (as per mentioned above).<br />
Exclusive A/c vehicle for transfers & sightseeing.  <br />
All permit fees & hotel taxes (as per itinerary).<br />
Rates are valid for INDIAN NATIONALS onlyAir Fare / Train fare. <br />
Personal Expenses such as Laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, porterage.<br />
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary. <br />
Entrance Fees & Guide charges. <br />
Any cost arising due to natural calamities like, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot).<br />
Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure. <br />
Service Tax. <br />
Insurance. <br />
Anything which is not included in the inclusion.<br />
<br />
Note:The package cost is valid for min.4 pax travelling together in Standard properties<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrival in Jabalpur I Drive to Bandhavgarh (170 kms / approx. 4 hours)
								</p>
								<p class="aj">Meet our representative upon arrival in Jabalpur and drive to Bandhavgarh - A couple of days at Bandhavgarh almost guarantees you a tiger sighting in this relatively small park that boasts the highest density of tigers in India. As well as the star attraction, there are also more than 40 leopards and more commonly sighted animals such as deer, wild boar and langur monkey. Arrive and check-in at your hotel. Post lunch enjoy an evening Jungle Safari. Later enjoy dinner at the hotel. Overnight stay in Bandhavgarh.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Safari in Bandhavgarh
								</p>
								<p class="aj">Early Morning proceed for a Jungle Safari in the park and after safari, return to the hotel for breakfast.. Later today, you may choose Elephant safari, which is really a rewarding experience, to follow the footsteps of the royal tigers sitting safely on the back of the elephant (Supplement cost apply for elephant safari). Overnight stay in Bandhavgarh.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Drive from Bandhavgarh – Kanha (255 kms / approx. 5 hours)
								</p>
								<p class="aj">After breakfast, drive to Kanha and check-in at your hotel. Kanha shelters one of the largest tiger’s populations in the country. The forests here are vast, and while your chances of seeing a tiger are probably slightly slimmer than at nearby Bandhavgarh, they’re still pretty good. Add to that the fact that you can really go deep into the forest, and you have a complete safari experience, rather than the rush-and-grab outings some complain of at Bandhavgarh. The Sal forests and vast meadows contain tigers and leopards and support huge populations of deer and antelope, including the extremely rare barasingha. You’ll see plenty of langur monkeys, the odd gaur (Indian bison) and maybe even a family or two of wild boar. The park is also home to more than 300 bird species. Overnight stay in Kanha.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> :Safari in Kanha
								</p>
								<p class="aj">Early Morning proceed for a Jungle Safari in the park. Back to the hotel for Breakfast. Post lunch enjoy an evening Jungle Safari. Alternatively, you may plan independent activities to explore the richness of this park through Nature Trails - A well-marked 7km trail leads from just inside Khatiya Gate and skirts along the edge of the park before looping back to the village. Mostly you will see a lot of monkeys and birds, but tigers do venture into this area on occasions and an accompanying guide is essential (Supplement cost apply for escorting). Overnight stay in Kanha.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Drive from Kanha – Jabalpur (150 kms / approx. 4 hours)
								</p>
								<p class="aj">After breakfast, proceed to the Jabalpur airport to board flight back home.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Air Fare / Train fare. </li><li>
Personal Expenses such as Laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, porterage.</li><li>
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary. </li><li>
Entrance Fees & Guide charges. </li><li>
Any cost arising due to natural calamities like, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot).</li><li>
Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure. </li><li>
Service Tax. </li><li>
Insurance. </li><li>
Anything which is not included in the inclusion.</li><li>
Note:The package cost is valid for min.4 pax travelling together in Standard properties</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.sanskrutivacations.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Wilderness of Madhya Pradesh5D/4N - 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="82784"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Wilderness of Madhya Pradesh5D/4N - 4 Nights / 5 Days Tour Packages";i:2;s:149:"book wilderness of madhya pradesh5d/4n - 4 nights / 5 days tour packages, wildlife and nature tour packages, bandhavgarh, umaria, kanha tour packages";i:3;s:200:"Book Wilderness of Madhya Pradesh5D/4N - 4 Nights / 5 Days tour packages from Sanskruti Vacations - Get attractive 4 Nights / 5 Days Wildlife and Nature  tour packages for  Bandhavgarh, Umaria, Kanha.";i:4;s:1417:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bandhavgarh, Umaria, Kanha"        
		                 },
		      "description": "Accommodation on twin Sharing Basis. 
Meal Plan (as per mentioned above).
Exclusive A/c vehicle for transfers & sightseeing.  
All permit fees & hotel taxes (as per itinerary).
Rates are valid for INDIAN NATIONALS onlyAir Fare / Train fare. 
Personal Expenses such as Laundry, telephone calls, tips & gratuity, mineral water, soft & hard drinks, porterage.
Additional sightseeing or extra usage of vehicle, other than mentioned in the itinerary. 
Entrance Fees & Guide charges. 
Any cost arising due to natural calamities like, road blockage, political disturbances (strikes), etc (to be borne by the client, which is directly payable on the spot).
Any increase in taxes or fuel price, leading to increase in cost on surface transportation & land arrangements, which may come into effect prior to departure. 
Service Tax. 
Insurance. 
Anything which is not included in the inclusion.

Note:The package cost is valid for min.4 pax travelling together in Standard properties",
		      "name": "Wilderness of Madhya Pradesh5D/4N",
		      "telephone": "+91-9769880881"
		    }
		    </script>
			";i:5;N;}